You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
3.9 KiB

  1. unit uutlHashSetTests;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, TestFramework,
  6. uutlGenerics;
  7. type
  8. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  9. TIntSet = specialize TutlHashSet<Integer>;
  10. TutlHastSetTests = class(TTestCase)
  11. private
  12. fIntSet: TIntSet;
  13. protected
  14. procedure SetUp; override;
  15. procedure TearDown; override;
  16. published
  17. procedure Prop_Count;
  18. procedure Meth_Add;
  19. procedure Meth_Contains;
  20. procedure Meth_IndexOf;
  21. procedure Meth_Remove;
  22. procedure Meth_Delete;
  23. end;
  24. implementation
  25. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  26. //TutlHastSetTests//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  27. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  28. procedure TutlHastSetTests.SetUp;
  29. begin
  30. fIntSet := TIntSet.Create(true);
  31. end;
  32. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  33. procedure TutlHastSetTests.TearDown;
  34. begin
  35. FreeAndNil(fIntSet);
  36. end;
  37. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  38. procedure TutlHastSetTests.Prop_Count;
  39. begin
  40. AssertEquals(0, fIntSet.Count);
  41. fIntSet.Add(123);
  42. AssertEquals(1, fIntSet.Count);
  43. fIntSet.Add(234);
  44. AssertEquals(2, fIntSet.Count);
  45. end;
  46. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  47. procedure TutlHastSetTests.Meth_Add;
  48. begin
  49. AssertTrue (fIntSet.Add(123));
  50. AssertFalse(fIntSet.Add(123));
  51. AssertTrue (fIntSet.Add(234));
  52. AssertFalse(fIntSet.Add(234));
  53. end;
  54. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  55. procedure TutlHastSetTests.Meth_Contains;
  56. begin
  57. AssertFalse(fIntSet.Contains(123));
  58. fIntSet.Add(123);
  59. AssertTrue (fIntSet.Contains(123));
  60. AssertFalse(fIntSet.Contains(234));
  61. fIntSet.Add(234);
  62. AssertTrue (fIntSet.Contains(234));
  63. end;
  64. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  65. procedure TutlHastSetTests.Meth_IndexOf;
  66. begin
  67. AssertEquals(-1, fIntSet.IndexOf(234));
  68. fIntSet.Add(234);
  69. AssertEquals(0, fIntSet.IndexOf(234));
  70. AssertEquals(-1, fIntSet.IndexOf(345));
  71. fIntSet.Add(345);
  72. AssertEquals(0, fIntSet.IndexOf(234));
  73. AssertEquals(1, fIntSet.IndexOf(345));
  74. AssertEquals(-1, fIntSet.IndexOf(123));
  75. fIntSet.Add(123);
  76. AssertEquals(0, fIntSet.IndexOf(123));
  77. AssertEquals(1, fIntSet.IndexOf(234));
  78. AssertEquals(2, fIntSet.IndexOf(345));
  79. end;
  80. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  81. procedure TutlHastSetTests.Meth_Remove;
  82. begin
  83. AssertFalse(fIntSet.Remove(123));
  84. fIntSet.Add(123);
  85. AssertTrue(fIntSet.Remove(123));
  86. AssertFalse(fIntSet.Remove(234));
  87. fIntSet.Add(234);
  88. AssertTrue(fIntSet.Remove(234));
  89. end;
  90. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  91. procedure TutlHastSetTests.Meth_Delete;
  92. begin
  93. fIntSet.Add(123);
  94. fIntSet.Delete(0);
  95. AssertTrue(fIntSet.IsEmpty);
  96. end;
  97. initialization
  98. RegisterTest(TutlHastSetTests.Suite);
  99. end.