void LinearHashTableTest::testInsert() { const int N = 1000; LinearHashTable<int> ht; assert (ht.empty()); for (int i = 0; i < N; ++i) { std::pair<LinearHashTable<int>::Iterator, bool> res = ht.insert(i); assert (*res.first == i); assert (res.second); LinearHashTable<int>::Iterator it = ht.find(i); assert (it != ht.end()); assert (*it == i); assert (ht.size() == i + 1); } assert (!ht.empty()); for (int i = 0; i < N; ++i) { LinearHashTable<int>::Iterator it = ht.find(i); assert (it != ht.end()); assert (*it == i); } for (int i = 0; i < N; ++i) { std::pair<LinearHashTable<int>::Iterator, bool> res = ht.insert(i); assert (*res.first == i); assert (!res.second); } }
void LinearHashTableTest::testConstIterator() { const int N = 1000; LinearHashTable<int, Hash<int> > ht; for (int i = 0; i < N; ++i) { ht.insert(i); } std::set<int> values; LinearHashTable<int, Hash<int> >::ConstIterator it = ht.begin(); while (it != ht.end()) { assert (values.find(*it) == values.end()); values.insert(*it); ++it; } assert (values.size() == N); values.clear(); const LinearHashTable<int, Hash<int> > cht(ht); LinearHashTable<int, Hash<int> >::ConstIterator cit = cht.begin(); while (cit != cht.end()) { assert (values.find(*cit) == values.end()); values.insert(*cit); ++cit; } assert (values.size() == N); }
void LinearHashTableTest::testErase() { const int N = 1000; LinearHashTable<int, Hash<int> > ht; for (int i = 0; i < N; ++i) { ht.insert(i); } assert (ht.size() == N); for (int i = 0; i < N; i += 2) { ht.erase(i); LinearHashTable<int, Hash<int> >::Iterator it = ht.find(i); assert (it == ht.end()); } assert (ht.size() == N/2); for (int i = 0; i < N; i += 2) { LinearHashTable<int, Hash<int> >::Iterator it = ht.find(i); assert (it == ht.end()); } for (int i = 1; i < N; i += 2) { LinearHashTable<int, Hash<int> >::Iterator it = ht.find(i); assert (it != ht.end()); assert (*it == i); } for (int i = 0; i < N; i += 2) { ht.insert(i); } for (int i = 0; i < N; ++i) { LinearHashTable<int, Hash<int> >::Iterator it = ht.find(i); assert (it != ht.end()); assert (*it == i); } }