コード例 #1
0
 def test_set_on_existing_key(self):
     """Set a value using a key that already exists."""
     h = HashTable()
     h.set(self.present_pair[0], self.present_pair[1])
     self.assertEqual(self.present_pair[1], h.get(self.present_pair[0]))
     h.set(self.overwrite_pair[0], self.overwrite_pair[1])
     self.assertEqual(self.overwrite_pair[1], h.get(self.overwrite_pair[0]))
コード例 #2
0
 def test_set_on_slot_with_collisions(self):
     """Set a value using a key that hashes to a bin already containing
     other keys.
     """
     h = HashTable()
     h.set(self.present_pair[0], self.present_pair[1])
     h.set(self.colliding_pair[0], self.colliding_pair[1])
     self.assertEqual(self.present_pair[1], h.get(self.present_pair[0]))
     self.assertEqual(self.colliding_pair[1], h.get(self.colliding_pair[0]))
コード例 #3
0
 def test_get_from_hash_with_collisions(self):
     """Get a value from a hash using a key that collides with another
     key in the hash.
     """
     h = HashTable()
     for key, val in self.pairs.items():
         h.set(key, val)
     h.set(self.colliding_pair[0], self.colliding_pair[1])
     self.assertEqual(self.present_pair[1], h.get(self.present_pair[0]))
     self.assertEqual(self.colliding_pair[1], h.get(self.colliding_pair[0]))
コード例 #4
0
def test_get_one_letter_key():
    size = 8
    chars = "habcdefg"
    h = HashTable(size)
    for c in chars:
        h.set(c, 63)
    h.set('i', 8)
    h.set('r', 15)
    assert h.get('r') == 15
    assert h.get('i') == 8
    assert h.get('c') == 63
コード例 #5
0
class HashTableTest(unittest.TestCase):
    def setUp(self):
        self.hash_table = HashTable(8)

    def test_hash_function(self):
        hash_value = self.hash_table._hash_function('abc')
        self.assertEquals(hash_value, 297)

    def test_set_and_set(self):
        self.hash_table.set('key', 'value')
        value = self.hash_table.get('key')
        self.assertEquals(value, 'value')

    def test_remove(self):
        self.hash_table.set('key', 'value')
        self.hash_table.remove('key')
        with self.assertRaises(ValueError):
            self.hash_table.get('key')
コード例 #6
0
def test_multiple_sets():
    size = 8
    chars = "habcdefg"
    h = HashTable(size)
    for c in chars:
        h.set(c, 63)
    h.set('i', 80)
    h.set('r', 15)
    h.set('i', 9)
    h.set('i', 10)
    h.set('i', 14)
    assert h.get('i') == 14
コード例 #7
0
 def test_collision(self):
     my_ht = HashTable(11)
     my_ht.set('puck', 20)
     my_ht.set('uckp', 30)
     self.assertEqual(30, my_ht.get('uckp'))
コード例 #8
0
 def test_get_nonstring(self):
     my_ht = HashTable(11)
     self.assertEqual('key must be a string!', my_ht.get(4))
コード例 #9
0
def test_words(words):
    ht = HashTable()
    for k, v in words.items():
        ht.set(k, v)
    for k, v in words.items():
        assert ht.get(k) == v
コード例 #10
0
def test_number_strings(n):
    ht = HashTable()
    ht.set(str(n), n)
    assert ht.get(str(n)) == n
コード例 #11
0
def test_set_key_overwrite():
    ht = HashTable()
    ht.set('key', 1)
    assert ht.get('key') == 1
    ht.set('key', 2)
    assert ht.get('key') == 2
コード例 #12
0
def test_nonexistent_key():
    ht = HashTable()
    with pytest.raises(KeyError):
        ht.get('key')
コード例 #13
0
def test_set_all_words():
    wordlist = _make_wordlist()
    h = HashTable(256)
    for ind, word in enumerate(wordlist):
        h.set(word[:-1], word[:-1])
    assert h.get('zoom') == 'zoom'
コード例 #14
0
 def test_set_on_empty_slot(self):
     """Set a value using a key that hashes to an empty bin."""
     h = HashTable()
     h.set(self.present_pair[0], self.present_pair[1])
     self.assertEqual(self.present_pair[1], h.get(self.present_pair[0]))
コード例 #15
0
 def test_nonkey(self):
     my_ht = HashTable(11)
     my_ht.set('puck', 20)
     self.assertEqual('key is not in table', my_ht.get('python'))
コード例 #16
0
def test_non_string_key():
    ht = HashTable()
    with pytest.raises(TypeError):
        ht.set(6, 5)
    with pytest.raises(TypeError):
        ht.get(6)
コード例 #17
0
 def test_set_to_empty(self):
     my_ht = HashTable(11)
     my_ht.set('puck', 20)
     self.assertEqual(20, my_ht.get('puck'))
コード例 #18
0
 def test_get_from_hash_containing_value(self):
     """Get a value from a hash using a key which it contains."""
     h = HashTable()
     for key, val in self.pairs.items():
         h.set(key, val)
     self.assertEqual(self.present_pair[1], h.get(self.present_pair[0]))