Exemplo n.º 1
0
    def test_search_resolution_overwrite(self):
        # Arrange
        key = 'key'
        value = 'value'
        ht = HashTable()        
        ht.insert(key, value)

        # Act + Assert
        self.assertEqual(value, ht.search(key))
Exemplo n.º 2
0
    def test_search_resolution_chaning_without_collision(self):
        # Arrange
        key = 'key'
        value = 'value'
        ht = HashTable(container_type=LinkedList, resolution=HashTable.RESOLUTION_CHAINING)
        ht.insert(key, value)

        # Act + Assert
        self.assertEqual(value, ht.search(key))
Exemplo n.º 3
0
    def test_insert_resolution_chaning_no_collision(self):
        # Arrange
        key = 'key'
        value = 'value'
        ht = HashTable(container_type=LinkedList, resolution=HashTable.RESOLUTION_CHAINING)        
        i = ht.i(key)

        # Act
        ht.insert(key, value)

        # Assert
        self.assertEqual(LinkedList((key,value)), ht.arr[i])
Exemplo n.º 4
0
    def test_insert_resolution_overwrite(self):
        # Arrange
        key = 'key'
        value = 'value'
        ht = HashTable()        
        i = ht.i(key)

        # Act
        ht.insert(key, value)

        # Assert
        self.assertEqual(HashTable.Bucket((key,value)), ht.arr[i])
Exemplo n.º 5
0
    def test_delete_resolution_overwrite(self):
        # Arrange
        key = 'key'
        value = 'value'
        ht = HashTable()        
        ht.insert(key, value)

        # Act
        ht.delete(key)

        # Assert
        self.assertIsNone(ht.search(key))
Exemplo n.º 6
0
    def test_search_resolution_chaning_with_collision(self):
        # Arrange
        key = 'key'
        value = 'value'
        key2 = 'key2'
        value2 = 'value2'
        ht = HashTable(container_type=LinkedList, resolution=HashTable.RESOLUTION_CHAINING, hash_function=lambda x: 1)
        ht.insert(key, value)
        ht.insert(key2, value2)

        # Act + Assert
        self.assertEqual((value, value2), (ht.search(key), ht.search(key2)))
Exemplo n.º 7
0
    def test_delete_resolution_chaning_without_collision(self):
        return
        # Arrange
        key = 'key'
        value = 'value'
        ht = HashTable(container_type=LinkedList, resolution=HashTable.RESOLUTION_CHAINING)
        ht.insert(key, value)

        # Act
        ht.delete(key)

        # Assert
        self.assertIsNone(ht.search(key))
Exemplo n.º 8
0
    def test_delete_resolution_chaning_with_collision(self):
        # Arrange
        key = 'key'
        value = 'value'
        key2 = 'key2'
        value2 = 'value2'
        ht = HashTable()
        ht.insert(key, value)
        ht.insert(key2, value2)

        # Act
        ht.delete(key)

        # Assert
        self.assertIsNone(ht.search(key))
Exemplo n.º 9
0
    def test_iteration_resolution_chaining(self):
        # Arrange
        ht = HashTable(container_type=LinkedList, resolution=HashTable.RESOLUTION_CHAINING, hash_function=lambda x: 1)
        ht.insert('key', 'value')
        ht.insert('key2', 'value2')
        ht.hash_function = lambda x: 2
        ht.insert('key3', 'value3')

        # Act + Assert
        for (expected_key, expected_val), (actual_key, actual_val) in zip((('key', 'value'), ('key2', 'value2'), ('key3', 'value3')), ht):
            self.assertEqual(expected_key, actual_key)
            self.assertEqual(expected_val, actual_val)
Exemplo n.º 10
0
    def test_iteration_resolution_overwrite(self):
        # Arrange
        ht = HashTable()
        ht.insert('key', 'value')
        ht.insert('key2', 'value2')
        ht.hash_function = lambda x: 2
        ht.insert('key3', 'value3')

        # Act + Assert
        for (expected_key, expected_val), (actual_key, actual_val) in zip((('key3', 'value3'), ('key2', 'value2'), ('key', 'value')), ht):
            self.assertEqual(expected_key, actual_key)
            self.assertEqual(expected_val, actual_val)