Пример #1
0
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);
	}		
}
Пример #2
0
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);
}
Пример #3
0
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);
    }
}