def test_can_retrieve_proper_info_with_collisions2():
  ht = HashTable()
  collision_key = ht.find_collision_key('babies')
  ht.add('babies', 55)
  ht.add(collision_key, 10000000)
  collision_key2 = ht.find_collision_key('goats')
  ht.add('goats', 99)
  ht.add(collision_key2, 9887766554433231)
  assert (ht.get('babies') == 55) and (ht.get('goats') == 99) and (ht.get(collision_key) == 10000000)
  
Esempio n. 2
0
from hash_table.hash_table import HashTable

hash_table = HashTable(10)
hash_table.set(100, 1)
hash_table.set(25, 2)
hash_table.set(25, 3)

a = hash_table.get(25)
print(a)
print(hash_table.keys())
print(hash_table.values())
print(hash_table.contains_key(73))
print(hash_table.contains_value(5))

for key in hash_table.keys():
    print(key, hash_table.get(key))
class HashTableTest(unittest.TestCase):

    def setUp(self):
        self.test_hash_table = HashTable()

        self.test_hash_table.put(54, "cat")
        self.test_hash_table.put(26, "dog")
        self.test_hash_table.put(93, "lion")
        self.test_hash_table.put(17, "tiger")
        self.test_hash_table.put(77, "bird")
        self.test_hash_table.put(31, "cow")
        self.test_hash_table.put(44, "goat")
        self.test_hash_table.put(55, "pig")
        self.test_hash_table.put(20, "chicken")

    def test_init_works_correct(self):
        self.assertEqual(HashTable().size, 11)
        self.assertEqual(HashTable().slots, [None]*self.test_hash_table.size)
        self.assertEqual(HashTable().data, [None]*self.test_hash_table.size)

    def test_hash_returns_correct_result(self):
        self.assertEqual(HashTable.hash_function(54, self.test_hash_table.size), 10)
        self.assertEqual(HashTable.hash_function(26, self.test_hash_table.size), 4)
        self.assertEqual(HashTable.hash_function(93, self.test_hash_table.size), 5)
        self.assertEqual(HashTable.hash_function(17, self.test_hash_table.size), 6)
        self.assertEqual(HashTable.hash_function(77, self.test_hash_table.size), 0)
        self.assertEqual(HashTable.hash_function(31, self.test_hash_table.size), 9)
        self.assertEqual(HashTable.hash_function(44, self.test_hash_table.size), 0)
        self.assertEqual(HashTable.hash_function(55, self.test_hash_table.size), 0)
        self.assertEqual(HashTable.hash_function(20, self.test_hash_table.size), 9)

    def test_rehash_returns_correct_result(self):
        self.assertEqual(HashTable.rehash(0, self.test_hash_table.size), 1)
        self.assertEqual(HashTable.rehash(5, self.test_hash_table.size), 6)
        self.assertEqual(HashTable.rehash(10, self.test_hash_table.size), 0)

    def test_put_works_correct(self):
        self.assertEqual(self.test_hash_table.slots, [77, 44, 55, 20, 26, 93, 17, None, None, 31, 54])
        self.assertEqual(self.test_hash_table.data, ['bird', 'goat', 'pig', 'chicken', 'dog', 'lion', 'tiger', None,
                                                     None, 'cow', 'cat'])

    def test_get_works_correct(self):
        self.assertEqual(self.test_hash_table.get(54), "cat")
        self.assertEqual(self.test_hash_table.get(26), "dog")
        self.assertEqual(self.test_hash_table.get(93), "lion")
        self.assertEqual(self.test_hash_table.get(17), "tiger")
        self.assertEqual(self.test_hash_table.get(77), "bird")
        self.assertEqual(self.test_hash_table.get(31), "cow")
        self.assertEqual(self.test_hash_table.get(44), "goat")
        self.assertEqual(self.test_hash_table.get(55), "pig")
        self.assertEqual(self.test_hash_table.get(20), "chicken")
        self.assertIsNone(self.test_hash_table.get(18))
        self.test_hash_table.put(18, "antelope")
        self.test_hash_table.put(19, "sparrow")
        self.assertIsNone(self.test_hash_table.get(21))

    def test_getitem_returns_correct_value(self):
        self.assertEqual(self.test_hash_table[54], "cat")

    def test_set_item_works_correct(self):
        set_test_hash_table = HashTable()
        set_test_hash_table[18] = "monkey"
        self.assertEqual(set_test_hash_table[18], "monkey")
        set_test_hash_table[54] = "elephant"
        self.assertEqual(set_test_hash_table[54], "elephant")
        set_test_hash_table[65] = "pigeon"
        set_test_hash_table[65] = "crocodile"
        self.assertEqual(set_test_hash_table[65], "crocodile")
def test_retrieving_based_on_a_key_returns_the_value_stored():
  hash_table = HashTable()
  hash_table.add('yahia','24')
  assert hash_table.get('yahia') == '24'
def test_adding_a_key_and_value_to_hashtable():
  hash_table = HashTable()
  hash_table.add('yahia','24')
  assert hash_table.get('yahia') == '24'
def test_retrieve_a_value_from_a_bucket_within_the_hashtable_that_has_a_collision():
  hash_table = HashTable()
  hash_table.add('yahia','24')
  hash_table.add('yaiha','30')
  assert hash_table.get('yahia') == '24'
  assert hash_table.get('yaiha') == '30'
def test_returns_null_for_a_key_that_does_not_exist_in_the_hashtable():
  hash_table = HashTable()
  assert hash_table.get('test') == None
def test_can_retrieve_proper_info_with_collisions():
  ht = HashTable()
  collision_key = ht.find_collision_key('babies')
  ht.add('babies', 55)
  ht.add(collision_key, 10000000)
  assert ht.get('babies') == 55
def test_multiple_insertions_get():
  ht = HashTable()
  ht.add('babies', 25)
  ht.add('goats', 99)
  assert ht.get('goats') == 99
def test_get_value_works():
  ht = HashTable()
  ht.add('babies', 25)
  assert ht.get('babies') == 25