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