1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverunit Antlr.Runtime.Collections.Tests;
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver{
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Delphi DUnit Test Case
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  ----------------------
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  This unit contains a skeleton test case class generated by the Test Case Wizard.
7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Modify the generated code to correctly setup and call the methods from the unit 
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  being tested.
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverinterface
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruveruses
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  TestFramework,
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Antlr.Runtime.Collections,
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Generics.Collections,
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Antlr.Runtime.Tools;
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvertype
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  // Test methods for class IHashList
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  TestIHashList = class(TTestCase)
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  strict private
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    FIHashList: IHashList<Integer, String>;
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  public
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure SetUp; override;
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure TearDown; override;
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  published
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure TestInsertionOrder;
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure TestRemove;
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  end;
32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  // Test methods for class IStackList
34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  TestIStackList = class(TTestCase)
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  strict private
36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    FIStackList: IStackList<String>;
37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  public
38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure SetUp; override;
39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure TearDown; override;
40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  published
41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure TestPushPop;
42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    procedure TestPeek;
43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  end;
44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimplementation
46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruveruses
48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  SysUtils;
49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverconst
51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Values: array [0..9] of Integer = (50, 1, 33, 76, -22, 22, 34, 2, 88, 12);
52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestIHashList.SetUp;
54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvervar
55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  I: Integer;
56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  FIHashList := THashList<Integer, String>.Create;
58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  for I in Values do
59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    FIHashList.Add(I,'Value' + IntToStr(I));
60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestIHashList.TearDown;
63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  FIHashList := nil;
65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestIHashList.TestInsertionOrder;
68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvervar
69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  I: Integer;
70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  P: TPair<Integer, String>;
71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  I := 0;
73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  for P in FIHashList do
74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  begin
75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    CheckEquals(P.Key, Values[I]);
76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    CheckEquals(P.Value, 'Value' + IntToStr(Values[I]));
77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    Inc(I);
78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  end;
79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestIHashList.TestRemove;
82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvervar
83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  I: Integer;
84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  P: TPair<Integer, String>;
85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  FIHashList.Remove(34);
87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  I := 0;
88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  for P in FIHashList do
89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  begin
90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    if (Values[I] = 34) then
91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver      Inc(I);
92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    CheckEquals(P.Key, Values[I]);
93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    CheckEquals(P.Value, 'Value' + IntToStr(Values[I]));
94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    Inc(I);
95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  end;
96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestIStackList.SetUp;
99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  FIStackList := TStackList<String>.Create;
101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestIStackList.TearDown;
104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  FIStackList := nil;
106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestIStackList.TestPushPop;
109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruvervar
110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Item: String;
111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Item := 'Item 1';
113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  FIStackList.Push(Item);
114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  Item := 'Item 2';
115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  FIStackList.Push(Item);
116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(FIStackList.Pop,'Item 2');
117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(FIStackList.Pop,'Item 1');
118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverprocedure TestIStackList.TestPeek;
121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverbegin
122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  FIStackList.Push('Item 1');
123324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  FIStackList.Push('Item 2');
124324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  FIStackList.Push('Item 3');
125324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  FIStackList.Pop;
126324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(FIStackList.Peek, 'Item 2');
127324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  CheckEquals(FIStackList.Pop, 'Item 2');
128324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend;
129324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
130324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverinitialization
131324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  // Register any test cases with the test runner
132324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  RegisterTest(TestIHashList.Suite);
133324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver  RegisterTest(TestIStackList.Suite);
134324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverend.
135