gvectortest.pp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. {$mode objfpc}
  2. unit gvectortest;
  3. interface
  4. uses fpcunit, testregistry, gvector;
  5. type vectorlli=specialize TVector<longint>;
  6. rec=record
  7. a,b:longint;
  8. end;
  9. vectorrec=specialize TVector<rec>;
  10. type TGVectorTest = class(TTestCase)
  11. Published
  12. procedure PushBackTest;
  13. procedure ResizeTest;
  14. procedure PopbackTest;
  15. procedure InsertEraseTest;
  16. procedure MutableTest;
  17. public
  18. procedure Setup;override;
  19. private
  20. data:vectorlli;
  21. end;
  22. implementation
  23. procedure TGVectorTest.PushBackTest;
  24. var i:longint;
  25. begin
  26. AssertEquals('Not IsEmpty', true, data.IsEmpty);
  27. for i:=0 to 10 do
  28. data.pushBack(i);
  29. for i:=0 to 10 do
  30. AssertEquals('Wrong data', i, data[i]);
  31. AssertEquals('Wrong size', 11, data.size);
  32. AssertEquals('IsEmpty', false, data.IsEmpty);
  33. end;
  34. procedure TGVectorTest.ResizeTest;
  35. var i:longint;
  36. begin
  37. AssertEquals('Not IsEmpty', true, data.IsEmpty);
  38. data.resize(50);
  39. AssertEquals('IsEmpty', false, data.IsEmpty);
  40. for i:=0 to 49 do
  41. data[i]:=3*i;
  42. for i:=0 to 49 do
  43. AssertEquals('Wrong data', 3*i, data[i]);
  44. AssertEquals('Wrong size', 50, data.size);
  45. end;
  46. procedure TGVectorTest.PopbackTest;
  47. var i:longint;
  48. begin
  49. for i:=0 to 49 do begin
  50. data.pushBack(5*i);
  51. AssertEquals('Wrong end', 5*i, data.back);
  52. AssertEquals('Wrong front', 0, data.front);
  53. end;
  54. for i:=1 to 10 do begin
  55. data.popBack;
  56. AssertEquals('Wrong end after popback', 5*(49-i), data.back);
  57. end;
  58. end;
  59. procedure TGVectorTest.InsertEraseTest;
  60. var i:longint;
  61. begin
  62. for i:=0 to 9 do
  63. data.pushBack(i);
  64. data.insert(3,100);
  65. for i:=0 to 2 do
  66. AssertEquals('Wrong data before insert', i, data[i]);
  67. AssertEquals('Wrong data', 100, data[3]);
  68. for i:=4 to 10 do
  69. AssertEquals('Wrong data after insert', i-1, data[i]);
  70. data.erase(4);
  71. for i:=4 to 9 do
  72. AssertEquals('Wrong data after erase', i, data[i]);
  73. AssertEquals('Wrong data before erase', 100, data[3]);
  74. for i:=0 to 2 do
  75. AssertEquals('Wrong data before erase', i, data[i]);
  76. end;
  77. procedure TGVectorTest.MutableTest;
  78. var dat:vectorrec;
  79. begin
  80. dat:=vectorrec.create;
  81. dat.resize(2);
  82. dat.mutable[0]^.a:=5;
  83. dat.mutable[0]^.b:=7;
  84. AssertEquals('Wrong data', 5, dat[0].a);
  85. AssertEquals('Wrong data', 7, dat[0].b);
  86. dat.mutable[0]^.a:=45;
  87. dat.mutable[0]^.b:=47;
  88. AssertEquals('Wrong data', 45, dat[0].a);
  89. AssertEquals('Wrong data', 47, dat[0].b);
  90. end;
  91. procedure TGVectorTest.Setup;
  92. begin
  93. data:=vectorlli.create;
  94. end;
  95. initialization
  96. RegisterTest(TGVectorTest);
  97. end.