def test_index():
    hset = HashSet(2)
    N = 1000
    for i in xrange(N):
        hset.add(i)
    for i in xrange(N):
        assert i in hset.entries_with_index(hset.index(i))
def test_contains():
    hset = HashSet(2)
    N = 100
    for i in xrange(N):
        hset.add(i)
    for i in xrange(N):
        assert i in hset
    for i in xrange(N+1, 2*N):
        assert i not in hset
def test_items():
    hset = HashSet(2)
    eq_(len(hset), 4)

    indices_when_adding = [hset.add(i) for i in range(10)]
    eq_(len(hset), 4)

    items = sorted(hset.items())
    eq_(len(items), 10)
    expected_items = list(enumerate(indices_when_adding))
    eq_(items, expected_items)
def test_entries_with_index():
    N = 1000
    hset = HashSet(1)
    entries_in_bucket_0 = []
    entries_in_bucket_1 = []
    for i in xrange(N):
        bucket = hset.add(i)
        if bucket == 0:
            entries_in_bucket_0.append(i)
        else:
            eq_(bucket, 1)
            entries_in_bucket_1.append(i)
    assert len(entries_in_bucket_0) > N/4
    assert len(entries_in_bucket_1) > N/4
    eq_(len(entries_in_bucket_0) + len(entries_in_bucket_1), N)

    eq_(sorted(hset.entries_with_index(0)), entries_in_bucket_0)
    eq_(sorted(hset.entries_with_index(1)), entries_in_bucket_1)
def test_index_nonpresent():
    hset = HashSet(2)
    hset.index(0)