Select Git revision
splay_experiment.py
-
Martin Mareš authoredMartin Mareš authored
cuckoo_hash_test.py 1.31 KiB
#!/usr/bin/env python3
import sys
import random
from cuckoo_hash import CuckooTable
def simple_test(n, table_size_percentage):
random.seed(42)
table = CuckooTable(n*table_size_percentage//100)
# Insert an arithmetic progression
for i in range(n):
table.insert(37*i)
# Verify contents of the table
for i in range(n):
assert table.lookup(37*i), "Item not present in table, but it should be."
assert not table.lookup(37*i+1), "Item present in table, even though it should not be."
def multiple_test(min_n, max_n, step_n, table_size_percentage):
for n in range(min_n, max_n, step_n):
print("\tn={}".format(n))
simple_test(n, table_size_percentage)
# A list of all tests
tests = [
("small", lambda: simple_test(100, 400)),
("middle", lambda: simple_test(31415, 300)),
("big", lambda: simple_test(1000000, 300)),
("tight", lambda: multiple_test(20000, 40000, 500, 205)),
]
if __name__ == "__main__":
for required_test in sys.argv[1:] or [name for name, _ in tests]:
for name, test in tests:
if name == required_test:
print("Running test {}".format(name), file=sys.stderr)
test()
break
else:
raise ValueError("Unknown test {}".format(name))