コード例 #1
0
 def setUp(self):
     self.hash_table = HashTableChaining(5)
コード例 #2
0
class TestHashTableChaining(unittest.TestCase):

    class Item(object):

        def __init__(self, item):
            self.item = item
            self.key = item

        def __repr__(self):
            return repr(self.item)

        def __eq__(self, other):
            if isinstance(other, self.__class__):
                return self.item == other.item
            else:
                return False

    def setUp(self):
        self.hash_table = HashTableChaining(5)

    def test_basic_initialization_and_repr(self):
        self.assertEqual(repr(self.hash_table), '[None, None, None, None, None]')

    def test_hash(self):
        self.assertEqual(self.hash_table.hash(17), 2)
        self.assertEqual(self.hash_table.hash(27), 2)
        self.assertEqual(self.hash_table.hash(12), 2)
        self.assertEqual(self.hash_table.hash(14), 4)
        self.assertEqual(self.hash_table.hash(1), 1)
        self.assertEqual(self.hash_table.hash(13), 3)
        self.assertEqual(self.hash_table.hash(20), 0)

    def test_insert(self):
        self.hash_table.insert(self.Item(3))
        self.assertEqual(repr(self.hash_table), '[None, None, None, [3], None]')
        self.hash_table.insert(self.Item(13))
        self.assertEqual(repr(self.hash_table), '[None, None, None, [3, 13], None]')
        self.hash_table.insert(self.Item(5))
        self.assertEqual(repr(self.hash_table), '[[5], None, None, [3, 13], None]')

    def test_remove(self):
        self.hash_table.insert(self.Item(3))
        self.hash_table.insert(self.Item(13))
        self.hash_table.insert(self.Item(5))
        self.assertEqual(repr(self.hash_table), '[[5], None, None, [3, 13], None]')
        self.hash_table.remove(self.Item(13))
        self.assertEqual(repr(self.hash_table), '[[5], None, None, [3], None]')
        self.hash_table.remove(self.Item(5))
        self.assertEqual(repr(self.hash_table), '[[], None, None, [3], None]')

    def test_search(self):
        self.hash_table.insert(self.Item(3))
        self.hash_table.insert(self.Item(5))
        self.assertEqual(self.hash_table.search(self.Item(4)), None)
        self.assertEqual(self.hash_table.search(self.Item(5)), self.Item(5))