gvectortest.pp 2.5 KB

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