mirror of
https://github.com/donnemartin/interactive-coding-challenges.git
synced 2024-03-22 13:11:13 +08:00
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
|
from nose.tools import assert_equal
|
||
|
|
||
|
|
||
|
class TestHashMap(object):
|
||
|
|
||
|
# TODO: It would be better if we had unit tests for each
|
||
|
# method in addition to the following end-to-end test
|
||
|
def test_end_to_end(self):
|
||
|
hash_table = HashTable(10)
|
||
|
|
||
|
print("Test: get on an empty hash table index")
|
||
|
assert_equal(hash_table.get(0), None)
|
||
|
|
||
|
print("Test: set on an empty hash table index")
|
||
|
hash_table.set(0, 'foo')
|
||
|
assert_equal(hash_table.get(0), 'foo')
|
||
|
hash_table.set(1, 'bar')
|
||
|
assert_equal(hash_table.get(1), 'bar')
|
||
|
|
||
|
print("Test: set on a non empty hash table index")
|
||
|
hash_table.set(10, 'foo2')
|
||
|
assert_equal(hash_table.get(0), 'foo')
|
||
|
assert_equal(hash_table.get(10), 'foo2')
|
||
|
|
||
|
print("Test: set on a key that already exists")
|
||
|
hash_table.set(10, 'foo3')
|
||
|
assert_equal(hash_table.get(0), 'foo')
|
||
|
assert_equal(hash_table.get(10), 'foo3')
|
||
|
|
||
|
print("Test: remove on a key that already exists")
|
||
|
hash_table.remove(10)
|
||
|
assert_equal(hash_table.get(0), 'foo')
|
||
|
assert_equal(hash_table.get(10), None)
|
||
|
|
||
|
print("Test: remove on a key that doesn't exist")
|
||
|
hash_table.remove(-1)
|
||
|
|
||
|
print('Success: test_end_to_end')
|
||
|
|
||
|
def main():
|
||
|
test = TestHashMap()
|
||
|
test.test_end_to_end()
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|