def test_keys_and_values(self): hash_table = MyHash() # random character generator for easy test insertion def random_val(): return random.choice(string.lowercase) [hash_table.set(random_val(), random_val()) for i in range(8)] self.assertEqual(len(hash_table.values()), 8) self.assertEqual(len(hash_table.keys()), 8)
def test_resize(self): hash_table = MyHash() # test both increasing in size when load factor is met original_length = len(hash_table._buckets) for i in range(30): key = ''.join(random.choice(string.lowercase) for i in range(3)) val = ''.join(random.choice(string.lowercase) for i in range(3)) hash_table.set(key, val) new_length = len(hash_table._buckets) self.assertGreater(new_length, original_length) # test decreasing in size when load is too small for key in hash_table.keys()[:26]: hash_table.delete(key) new_length = len(hash_table._buckets) self.assertEqual(new_length, original_length)