1*16467b97STreehugger Robot unit Antlr.Runtime.Collections.Tests;
2*16467b97STreehugger Robot {
3*16467b97STreehugger Robot 
4*16467b97STreehugger Robot   Delphi DUnit Test Case
5*16467b97STreehugger Robot   ----------------------
6*16467b97STreehugger Robot   This unit contains a skeleton test case class generated by the Test Case Wizard.
7*16467b97STreehugger Robot   Modify the generated code to correctly setup and call the methods from the unit
8*16467b97STreehugger Robot   being tested.
9*16467b97STreehugger Robot 
10*16467b97STreehugger Robot }
11*16467b97STreehugger Robot 
12*16467b97STreehugger Robot interface
13*16467b97STreehugger Robot 
14*16467b97STreehugger Robot uses
15*16467b97STreehugger Robot   TestFramework,
16*16467b97STreehugger Robot   Antlr.Runtime.Collections,
17*16467b97STreehugger Robot   Generics.Collections,
18*16467b97STreehugger Robot   Antlr.Runtime.Tools;
19*16467b97STreehugger Robot 
20*16467b97STreehugger Robot type
21*16467b97STreehugger Robot   // Test methods for class IHashList
22*16467b97STreehugger Robot   TestIHashList = class(TTestCase)
23*16467b97STreehugger Robot   strict private
24*16467b97STreehugger Robot     FIHashList: IHashList<Integer, String>;
25*16467b97STreehugger Robot   public
26*16467b97STreehugger Robot     procedure SetUp; override;
27*16467b97STreehugger Robot     procedure TearDown; override;
28*16467b97STreehugger Robot   published
29*16467b97STreehugger Robot     procedure TestInsertionOrder;
30*16467b97STreehugger Robot     procedure TestRemove;
31*16467b97STreehugger Robot   end;
32*16467b97STreehugger Robot 
33*16467b97STreehugger Robot   // Test methods for class IStackList
34*16467b97STreehugger Robot   TestIStackList = class(TTestCase)
35*16467b97STreehugger Robot   strict private
36*16467b97STreehugger Robot     FIStackList: IStackList<String>;
37*16467b97STreehugger Robot   public
38*16467b97STreehugger Robot     procedure SetUp; override;
39*16467b97STreehugger Robot     procedure TearDown; override;
40*16467b97STreehugger Robot   published
41*16467b97STreehugger Robot     procedure TestPushPop;
42*16467b97STreehugger Robot     procedure TestPeek;
43*16467b97STreehugger Robot   end;
44*16467b97STreehugger Robot 
45*16467b97STreehugger Robot implementation
46*16467b97STreehugger Robot 
47*16467b97STreehugger Robot uses
48*16467b97STreehugger Robot   SysUtils;
49*16467b97STreehugger Robot 
50*16467b97STreehugger Robot const
51*16467b97STreehugger Robot   Values: array [0..9] of Integer = (50, 1, 33, 76, -22, 22, 34, 2, 88, 12);
52*16467b97STreehugger Robot 
53*16467b97STreehugger Robot procedure TestIHashList.SetUp;
54*16467b97STreehugger Robot var
55*16467b97STreehugger Robot   I: Integer;
56*16467b97STreehugger Robot begin
57*16467b97STreehugger Robot   FIHashList := THashList<Integer, String>.Create;
58*16467b97STreehugger Robot   for I in Values do
59*16467b97STreehugger Robot     FIHashList.Add(I,'Value' + IntToStr(I));
60*16467b97STreehugger Robot end;
61*16467b97STreehugger Robot 
62*16467b97STreehugger Robot procedure TestIHashList.TearDown;
63*16467b97STreehugger Robot begin
64*16467b97STreehugger Robot   FIHashList := nil;
65*16467b97STreehugger Robot end;
66*16467b97STreehugger Robot 
67*16467b97STreehugger Robot procedure TestIHashList.TestInsertionOrder;
68*16467b97STreehugger Robot var
69*16467b97STreehugger Robot   I: Integer;
70*16467b97STreehugger Robot   P: TPair<Integer, String>;
71*16467b97STreehugger Robot begin
72*16467b97STreehugger Robot   I := 0;
73*16467b97STreehugger Robot   for P in FIHashList do
74*16467b97STreehugger Robot   begin
75*16467b97STreehugger Robot     CheckEquals(P.Key, Values[I]);
76*16467b97STreehugger Robot     CheckEquals(P.Value, 'Value' + IntToStr(Values[I]));
77*16467b97STreehugger Robot     Inc(I);
78*16467b97STreehugger Robot   end;
79*16467b97STreehugger Robot end;
80*16467b97STreehugger Robot 
81*16467b97STreehugger Robot procedure TestIHashList.TestRemove;
82*16467b97STreehugger Robot var
83*16467b97STreehugger Robot   I: Integer;
84*16467b97STreehugger Robot   P: TPair<Integer, String>;
85*16467b97STreehugger Robot begin
86*16467b97STreehugger Robot   FIHashList.Remove(34);
87*16467b97STreehugger Robot   I := 0;
88*16467b97STreehugger Robot   for P in FIHashList do
89*16467b97STreehugger Robot   begin
90*16467b97STreehugger Robot     if (Values[I] = 34) then
91*16467b97STreehugger Robot       Inc(I);
92*16467b97STreehugger Robot     CheckEquals(P.Key, Values[I]);
93*16467b97STreehugger Robot     CheckEquals(P.Value, 'Value' + IntToStr(Values[I]));
94*16467b97STreehugger Robot     Inc(I);
95*16467b97STreehugger Robot   end;
96*16467b97STreehugger Robot end;
97*16467b97STreehugger Robot 
98*16467b97STreehugger Robot procedure TestIStackList.SetUp;
99*16467b97STreehugger Robot begin
100*16467b97STreehugger Robot   FIStackList := TStackList<String>.Create;
101*16467b97STreehugger Robot end;
102*16467b97STreehugger Robot 
103*16467b97STreehugger Robot procedure TestIStackList.TearDown;
104*16467b97STreehugger Robot begin
105*16467b97STreehugger Robot   FIStackList := nil;
106*16467b97STreehugger Robot end;
107*16467b97STreehugger Robot 
108*16467b97STreehugger Robot procedure TestIStackList.TestPushPop;
109*16467b97STreehugger Robot var
110*16467b97STreehugger Robot   Item: String;
111*16467b97STreehugger Robot begin
112*16467b97STreehugger Robot   Item := 'Item 1';
113*16467b97STreehugger Robot   FIStackList.Push(Item);
114*16467b97STreehugger Robot   Item := 'Item 2';
115*16467b97STreehugger Robot   FIStackList.Push(Item);
116*16467b97STreehugger Robot   CheckEquals(FIStackList.Pop,'Item 2');
117*16467b97STreehugger Robot   CheckEquals(FIStackList.Pop,'Item 1');
118*16467b97STreehugger Robot end;
119*16467b97STreehugger Robot 
120*16467b97STreehugger Robot procedure TestIStackList.TestPeek;
121*16467b97STreehugger Robot begin
122*16467b97STreehugger Robot   FIStackList.Push('Item 1');
123*16467b97STreehugger Robot   FIStackList.Push('Item 2');
124*16467b97STreehugger Robot   FIStackList.Push('Item 3');
125*16467b97STreehugger Robot   FIStackList.Pop;
126*16467b97STreehugger Robot   CheckEquals(FIStackList.Peek, 'Item 2');
127*16467b97STreehugger Robot   CheckEquals(FIStackList.Pop, 'Item 2');
128*16467b97STreehugger Robot end;
129*16467b97STreehugger Robot 
130*16467b97STreehugger Robot initialization
131*16467b97STreehugger Robot   // Register any test cases with the test runner
132*16467b97STreehugger Robot   RegisterTest(TestIHashList.Suite);
133*16467b97STreehugger Robot   RegisterTest(TestIStackList.Suite);
134*16467b97STreehugger Robot end.
135