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::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); } }