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