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