HashSetTest.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. //
  2. // HashSetTest.cpp
  3. //
  4. // Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
  5. // and Contributors.
  6. //
  7. // SPDX-License-Identifier: BSL-1.0
  8. //
  9. #include "HashSetTest.h"
  10. #include "CppUnit/TestCaller.h"
  11. #include "CppUnit/TestSuite.h"
  12. #include "Poco/HashSet.h"
  13. #include <set>
  14. using Poco::Hash;
  15. using Poco::HashSet;
  16. HashSetTest::HashSetTest(const std::string& name): CppUnit::TestCase(name)
  17. {
  18. }
  19. HashSetTest::~HashSetTest()
  20. {
  21. }
  22. void HashSetTest::testInsert()
  23. {
  24. const int N = 1000;
  25. HashSet<int, Hash<int> > hs;
  26. assertTrue (hs.empty());
  27. for (int i = 0; i < N; ++i)
  28. {
  29. std::pair<HashSet<int, Hash<int> >::Iterator, bool> res = hs.insert(i);
  30. assertTrue (*res.first == i);
  31. assertTrue (res.second);
  32. HashSet<int, Hash<int> >::Iterator it = hs.find(i);
  33. assertTrue (it != hs.end());
  34. assertTrue (*it == i);
  35. assertTrue (hs.size() == i + 1);
  36. }
  37. assertTrue (!hs.empty());
  38. for (int i = 0; i < N; ++i)
  39. {
  40. HashSet<int, Hash<int> >::Iterator it = hs.find(i);
  41. assertTrue (it != hs.end());
  42. assertTrue (*it == i);
  43. }
  44. for (int i = 0; i < N; ++i)
  45. {
  46. std::pair<HashSet<int, Hash<int> >::Iterator, bool> res = hs.insert(i);
  47. assertTrue (*res.first == i);
  48. assertTrue (!res.second);
  49. }
  50. }
  51. void HashSetTest::testErase()
  52. {
  53. const int N = 1000;
  54. HashSet<int, Hash<int> > hs;
  55. for (int i = 0; i < N; ++i)
  56. {
  57. hs.insert(i);
  58. }
  59. assertTrue (hs.size() == N);
  60. for (int i = 0; i < N; i += 2)
  61. {
  62. hs.erase(i);
  63. HashSet<int, Hash<int> >::Iterator it = hs.find(i);
  64. assertTrue (it == hs.end());
  65. }
  66. assertTrue (hs.size() == N/2);
  67. for (int i = 0; i < N; i += 2)
  68. {
  69. HashSet<int, Hash<int> >::Iterator it = hs.find(i);
  70. assertTrue (it == hs.end());
  71. }
  72. for (int i = 1; i < N; i += 2)
  73. {
  74. HashSet<int, Hash<int> >::Iterator it = hs.find(i);
  75. assertTrue (it != hs.end());
  76. assertTrue (*it == i);
  77. }
  78. for (int i = 0; i < N; i += 2)
  79. {
  80. hs.insert(i);
  81. }
  82. for (int i = 0; i < N; ++i)
  83. {
  84. HashSet<int, Hash<int> >::Iterator it = hs.find(i);
  85. assertTrue (it != hs.end());
  86. assertTrue (*it == i);
  87. }
  88. }
  89. void HashSetTest::testIterator()
  90. {
  91. const int N = 1000;
  92. HashSet<int, Hash<int> > hs;
  93. for (int i = 0; i < N; ++i)
  94. {
  95. hs.insert(i);
  96. }
  97. std::set<int> values;
  98. HashSet<int, Hash<int> >::Iterator it = hs.begin();
  99. while (it != hs.end())
  100. {
  101. assertTrue (values.find(*it) == values.end());
  102. values.insert(*it);
  103. ++it;
  104. }
  105. assertTrue (values.size() == N);
  106. }
  107. void HashSetTest::testConstIterator()
  108. {
  109. const int N = 1000;
  110. HashSet<int, Hash<int> > hs;
  111. for (int i = 0; i < N; ++i)
  112. {
  113. hs.insert(i);
  114. }
  115. std::set<int> values;
  116. HashSet<int, Hash<int> >::ConstIterator it = hs.begin();
  117. while (it != hs.end())
  118. {
  119. assertTrue (values.find(*it) == values.end());
  120. values.insert(*it);
  121. ++it;
  122. }
  123. assertTrue (values.size() == N);
  124. }
  125. void HashSetTest::setUp()
  126. {
  127. }
  128. void HashSetTest::tearDown()
  129. {
  130. }
  131. CppUnit::Test* HashSetTest::suite()
  132. {
  133. CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("HashSetTest");
  134. CppUnit_addTest(pSuite, HashSetTest, testInsert);
  135. CppUnit_addTest(pSuite, HashSetTest, testErase);
  136. CppUnit_addTest(pSuite, HashSetTest, testIterator);
  137. CppUnit_addTest(pSuite, HashSetTest, testConstIterator);
  138. return pSuite;
  139. }