SimpleHashSet_test.cc 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #include "catch.hpp"
  2. #include "SimpleHashSet.hh"
  3. TEST_CASE("SimpleHashSet")
  4. {
  5. // construct
  6. SimpleHashSet<int, -1, std::hash<int>, std::equal_to<>> s;
  7. CHECK(s.capacity() == 0);
  8. CHECK(s.size() == 0);
  9. CHECK(s.empty());
  10. // insert 42
  11. CHECK(!s.contains(42));
  12. CHECK(!s.find(42));
  13. CHECK(s.insert(42)); // {42}
  14. CHECK(s.contains(42));
  15. CHECK(*(s.find(42)) == 42);
  16. CHECK(s.capacity() == 2);
  17. CHECK(s.size() == 1);
  18. CHECK(!s.empty());
  19. // reserve
  20. s.reserve(4);
  21. CHECK(s.capacity() == 4);
  22. CHECK(s.size() == 1);
  23. // insert 42 again
  24. CHECK(!s.insert(42)); // {42}
  25. CHECK(s.contains(42));
  26. CHECK(*(s.find(42)) == 42);
  27. CHECK(s.capacity() == 4);
  28. CHECK(s.size() == 1);
  29. // insert 1, 2, 3
  30. CHECK(s.insert(1));
  31. CHECK(s.insert(2));
  32. CHECK(s.insert(3)); // {1, 2, 3, 42}
  33. CHECK(*s.find(42) == 42);
  34. CHECK(*s.find(1) == 1);
  35. CHECK(*s.find(2) == 2);
  36. CHECK(*s.find(3) == 3);
  37. CHECK(!s.find(4));
  38. CHECK(!s.find(5));
  39. CHECK(s.size() == 4);
  40. CHECK(s.capacity() == 4);
  41. // insert 10, must grow
  42. CHECK(s.insert(10)); // {1, 2, 3, 10, 42}
  43. CHECK(*s.find(42) == 42);
  44. CHECK(*s.find(1) == 1);
  45. CHECK(*s.find(2) == 2);
  46. CHECK(*s.find(3) == 3);
  47. CHECK(!s.find(4));
  48. CHECK(!s.find(5));
  49. CHECK(*s.find(10) == 10);
  50. CHECK(s.size() == 5);
  51. CHECK(s.capacity() == 8);
  52. // erase non-existing
  53. CHECK(!s.erase(99));
  54. CHECK(s.size() == 5);
  55. // erase 1, 3
  56. CHECK(s.erase(1));
  57. CHECK(s.erase(3)); // {2, 10, 42}
  58. CHECK(*s.find(42) == 42);
  59. CHECK(!s.find(1));
  60. CHECK(*s.find(2) == 2);
  61. CHECK(!s.find(3));
  62. CHECK(!s.find(4));
  63. CHECK(!s.find(5));
  64. CHECK(*s.find(10) == 10);
  65. CHECK(s.size() == 3);
  66. CHECK(s.capacity() == 8);
  67. }