Home | History | Annotate | Download | only in Antlr3.Runtime.Tests
      1 unit 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 
     12 interface
     13 
     14 uses
     15   TestFramework,
     16   Antlr.Runtime.Collections,
     17   Generics.Collections,
     18   Antlr.Runtime.Tools;
     19 
     20 type
     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 
     45 implementation
     46 
     47 uses
     48   SysUtils;
     49 
     50 const
     51   Values: array [0..9] of Integer = (50, 1, 33, 76, -22, 22, 34, 2, 88, 12);
     52 
     53 procedure TestIHashList.SetUp;
     54 var
     55   I: Integer;
     56 begin
     57   FIHashList := THashList<Integer, String>.Create;
     58   for I in Values do
     59     FIHashList.Add(I,'Value' + IntToStr(I));
     60 end;
     61 
     62 procedure TestIHashList.TearDown;
     63 begin
     64   FIHashList := nil;
     65 end;
     66 
     67 procedure TestIHashList.TestInsertionOrder;
     68 var
     69   I: Integer;
     70   P: TPair<Integer, String>;
     71 begin
     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;
     79 end;
     80 
     81 procedure TestIHashList.TestRemove;
     82 var
     83   I: Integer;
     84   P: TPair<Integer, String>;
     85 begin
     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;
     96 end;
     97 
     98 procedure TestIStackList.SetUp;
     99 begin
    100   FIStackList := TStackList<String>.Create;
    101 end;
    102 
    103 procedure TestIStackList.TearDown;
    104 begin
    105   FIStackList := nil;
    106 end;
    107 
    108 procedure TestIStackList.TestPushPop;
    109 var
    110   Item: String;
    111 begin
    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');
    118 end;
    119 
    120 procedure TestIStackList.TestPeek;
    121 begin
    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');
    128 end;
    129 
    130 initialization
    131   // Register any test cases with the test runner
    132   RegisterTest(TestIHashList.Suite);
    133   RegisterTest(TestIStackList.Suite);
    134 end.
    135