PageRenderTime 26ms CodeModel.GetById 18ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/packages/fcl-stl/tests/gsettest.pp

https://github.com/slibre/freepascal
Puppet | 125 lines | 108 code | 17 blank | 0 comment | 17 complexity | 040f67adf059c42000c92d0bab33d0f2 MD5 | raw file
Possible License(s): LGPL-2.0, LGPL-2.1, LGPL-3.0
  1{$mode objfpc}
  2
  3unit gsettest;
  4
  5interface
  6
  7uses fpcunit, testregistry, gset, gutil;
  8
  9type lesslli=specialize TLess<longint>;
 10     setlli=specialize TSet<longint,lesslli>;
 11
 12type TGSetTest = class(TTestCase)
 13  Published
 14    procedure SetTest;
 15    procedure IteratorTest;
 16  public
 17    procedure Setup;override;
 18  private 
 19    data:setlli;
 20  end;
 21
 22implementation
 23
 24procedure TGSetTest.IteratorTest;
 25var it:setlli.TIterator;
 26begin
 27  it:=data.min;
 28  if (it <> nil) then
 29    AssertEquals('not null min', 0, 1);
 30  data.insert(3);
 31  data.insert(5);
 32  data.insert(7);
 33  it:=data.min;
 34  AssertEquals('bad value', 3, it.Data);
 35  AssertEquals('next not true', true, it.Next);
 36  AssertEquals('bad value', 5, it.Data);
 37  AssertEquals('next not true', true, it.Next);
 38  AssertEquals('bad value', 7, it.Data);
 39  AssertEquals('next not false', false, it.Next);
 40end;
 41
 42procedure TGSetTest.SetTest;
 43var it:setlli.TIterator;
 44begin
 45  data.insert(3);
 46  data.insert(5);
 47  data.insert(7);
 48  AssertEquals('Wrong min', 3, data.min().Data);
 49  AssertEquals('Wrong max', 7, data.max().Data);
 50  data.delete(3);
 51  AssertEquals('Wrong size', 2, data.size);
 52  AssertEquals('Wrong min', 5, data.min().Data);
 53  data.insert(3);
 54  data.insert(3);
 55  data.insert(3);
 56  AssertEquals('Wrong size', 3, data.size);
 57  AssertEquals('Wrong min', 3, data.min().Data);
 58  if(data.find(4)<>nil) then 
 59    Fail('Found key which not there');
 60  if(data.find(5)=nil) then
 61    Fail('Not found key which was there');
 62
 63  if(data.FindLess(8).Data<>7) then
 64    Fail('Wrong less than 8');
 65  if(data.FindLess(7).Data<>5) then
 66    Fail('Wrong less than 7');
 67  if(data.FindLess(3)<>nil) then
 68    Fail('Wrong less than 3');
 69
 70  if(data.FindLessEqual(8).Data<>7) then
 71    Fail('Wrong less equal than 8');
 72  if(data.FindLessEqual(7).Data<>7) then
 73    Fail('Wrong less equal than 7');
 74  if(data.FindLessEqual(6).Data<>5) then
 75    Fail('Wrong less equal than 6');
 76  if(data.FindLessEqual(2)<>nil) then
 77    Fail('Wrong less equal than 2');
 78
 79  if(data.FindGreater(2).Data<>3) then
 80    Fail('Wrong greater than 2');
 81  if(data.Findgreater(3).Data<>5) then
 82    Fail('Wrong greater than 3');
 83  if(data.Findgreater(7)<>nil) then
 84    Fail('Wrong greater than 7');
 85
 86  if(data.FindGreaterEqual(2).Data<>3) then
 87    Fail('Wrong greater equal than 2');
 88  if(data.FindGreaterEqual(3).Data<>3) then
 89    Fail('Wrong greater equal than 3');
 90  if(data.FindGreaterEqual(4).Data<>5) then
 91    Fail('Wrong greater equal than 4');
 92  if(data.FindGreaterEqual(8)<>nil) then
 93    Fail('Wrong greater equal than 8');
 94
 95  data.insert(17);
 96
 97  it:=data.min;
 98  AssertEquals('Wrong min', 3, it.Data);
 99  AssertEquals('Next not true', true, it.next);
100  AssertEquals('Wrong next', 5, it.Data);
101  AssertEquals('Next not true', true, it.next);
102  AssertEquals('Wrong next', 7, it.Data);
103  AssertEquals('Next not true', true, it.next);
104  AssertEquals('Wrong next', 17, it.Data);
105  AssertEquals('Last next not fail', false, it.next);
106
107  it:=data.max;
108  AssertEquals('Wrong max', 17, it.Data);
109  AssertEquals('Prev not true', true, it.prev);
110  AssertEquals('Wrong prev', 7, it.Data);
111  AssertEquals('Prev not true', true, it.prev);
112  AssertEquals('Wrong prev', 5, it.Data);
113  AssertEquals('Prev not true', true, it.prev);
114  AssertEquals('Wrong prev', 3, it.Data);
115  AssertEquals('First prev not fail', false, it.prev);
116end;
117
118procedure TGSetTest.Setup;
119begin
120  data:=setlli.create;
121end;
122
123initialization
124  RegisterTest(TGSetTest);
125end.