1 { 2 Test all with: 3 ./runtests --format=plain --suite=TTestTextStrings 4 5 Test specific with: 6 ./runtests --format=plain --suite=TestTextStringsBasic 7 ./runtests --format=plain --suite=TestTextStringsLists 8 ./runtests --format=plain --suite=TestTextStringsTexts 9 ./runtests --format=plain --suite=TestTextStringsExchange 10 } 11 unit TestTextStrings; 12 13 {$mode objfpc}{$H+} 14 15 interface 16 17 uses 18 Classes, SysUtils, LCLProc, Forms, Controls, ExtCtrls, TextStrings, 19 fpcunit, testglobals, LazLogger; 20 21 type 22 23 { TTestTextStrings } 24 25 TTestTextStrings = class(TTestCase) 26 published 27 procedure TestTextStringsBasic; 28 procedure TestTextStringsLists; 29 procedure TestTextStringsTexts; 30 procedure TestTextStringsExchange; 31 end; 32 33 implementation 34 35 { TTestTextStrings } 36 37 procedure TTestTextStrings.TestTextStringsBasic; 38 var 39 ts: TTextStrings; 40 begin 41 ts:=TTextStrings.Create; 42 try 43 ts.AddObject('a',TObject(123)); 44 ts.AddObject('b',TObject(234)); 45 AssertEquals('ab',2,ts.Count); 46 AssertEquals('a at 0','a',ts[0]); 47 AssertEquals('b at 1','b',ts[1]); 48 AssertEquals('123 at 0',123,integer(PtrUInt(ts.Objects[0]))); 49 AssertEquals('234 at 1',234,integer(PtrUInt(ts.Objects[1]))); 50 51 ts.Delete(0); 52 AssertEquals('b',1,ts.Count); 53 AssertEquals('b at 0','b',ts[0]); 54 AssertEquals('234 at 0',234,integer(PtrUInt(ts.Objects[0]))); 55 finally 56 ts.Free; 57 end; 58 end; 59 60 procedure TTestTextStrings.TestTextStringsLists; 61 var 62 ts1: TTextStrings; 63 ts2: TTextStrings; 64 begin 65 ts1:=TTextStrings.Create; 66 ts2:=TTextStrings.Create; 67 try 68 ts1.AddObject('a',TObject(123)); 69 ts1.AddObject('b',TObject(234)); 70 ts2.AddObject('c',TObject(345)); 71 ts2.AddObject('d',TObject(456)); 72 ts1.AddStrings(ts2); 73 74 AssertEquals('count',4,ts1.Count); 75 AssertEquals('a at 0','a',ts1[0]); 76 AssertEquals('123 at 0',123,integer(PtrUInt(ts1.Objects[0]))); 77 AssertEquals('b at 1','b',ts1[1]); 78 AssertEquals('234 at 1',234,integer(PtrUInt(ts1.Objects[1]))); 79 AssertEquals('c at 2','c',ts1[2]); 80 AssertEquals('345 at 2',345,integer(PtrUInt(ts1.Objects[2]))); 81 AssertEquals('d at 3','d',ts1[3]); 82 AssertEquals('456 at 3',456,integer(PtrUInt(ts1.Objects[3]))); 83 finally 84 ts1.Free; 85 ts2.Free; 86 end; 87 end; 88 89 procedure TTestTextStrings.TestTextStringsTexts; 90 var 91 ts1: TTextStrings; 92 begin 93 ts1:=TTextStrings.Create; 94 try 95 ts1.Text:='asdasdasd asdasdasdasd asdqawrqwr'#13#10'asdasdasd asdasdasdasd asdqawrqwr'#13#10#13#10'asdasdasd asdasdasdasd asdqawrqwrasdasdasd asdasdasdasd asdqawrqwrasdasdasd asdasdasdasd asdqawrqwrasdasdasd asdasdasdasd asdqawrqwrasdasdasd asdasdasdasd asdqawrqwrasdasdasd asdasdasdasd asdqawrqwrasdasdasd asdasdasdasd asdqawrqwrasdasdasd asdasdasdasd asdqawrqwrasdasdasd asdasdasdasd asdqawrqwrasdasdasd asdasdasdasd asdqawrqwrasdasdasd asdasdasdasd asdqawrqwrasdasdasd asdasdasdasd asdqawrqwrasdasdasd asdasdasdasd asdqawrqwrasdasdasd asdasdasdasd'#13#10; 96 AssertEquals('count',4,ts1.Count); 97 finally 98 ts1.Free; 99 end; 100 end; 101 102 procedure TTestTextStrings.TestTextStringsExchange; 103 var 104 ts1: TTextStrings; 105 begin 106 ts1:=TTextStrings.Create; 107 try 108 ts1.Clear; 109 ts1.Add('1'); 110 ts1.Add('22'); 111 ts1.Exchange(0,1); 112 AssertEquals('Exchange 1,22 to 22,1 text','22'+LineEnding+'1'+LineEnding,ts1.Text); 113 AssertEquals('Exchange 1,22 to 22,1 first line','22',ts1[0]); 114 AssertEquals('Exchange 1,22 to 22,1 second line','1',ts1[1]); 115 ts1.Exchange(0,1); 116 AssertEquals('Exchange 22,1 to 1,22 text','1'+LineEnding+'22'+LineEnding,ts1.Text); 117 AssertEquals('Exchange 22,1 to 1,22 first line','1',ts1[0]); 118 AssertEquals('Exchange 22,1 to 1,22 second line','22',ts1[1]); 119 finally 120 ts1.Free; 121 end; 122 end; 123 124 initialization 125 AddToLCLTestSuite(TTestTextStrings); 126 127 end. 128 129