コード例 #1
0
ファイル: test_avl.py プロジェクト: attor/dictionary-magister
class AVLTester2(unittest.TestCase):
    """Second set of tests for avl"""
    def setUp(self):
        self.avl = AVL()
        self.avl.insert(277, 19)  # some random values choosen by me
        self.avl.insert(31, 14)  # order of inserted elements
        self.avl.insert(91, 99)  # forces rotation of nodes
        self.avl.insert(99, 22)
        self.avl.insert(111, 78)
        self.avl.insert(121, 91)

    def test_modifications(self):
        """Checks whether modification is ok"""
        self.avl.modify_by_key(111, 19)
        self.avl.modify_by_key(200, 21)
        self.assertEqual(self.avl.get_value_by_key(111), 19)

    def test_removal(self):
        """Checks whether removal works fine"""
        self.avl.remove_by_key(31)
        self.avl.remove_by_key(99)
        self.assertListEqual([v for k, v in self.avl], [99, 78, 91, 19])
        self.assertIsNone(self.avl.get_value_by_key(31))
        self.assertEqual(self.avl.get_value_by_closest_match(31), 99)

    def test_some_things(self):
        """Test some random things"""
        self.assertListEqual([78, 91, 19], [value for key, value in self.avl.get_iterator_by_key(111)])
        self.assertListEqual([78, 91, 19], [value for key, value in self.avl.get_iterator_by_position(4)])
        self.assertEqual(self.avl.get_value_by_closest_match(91), 99)
        self.assertEqual(self.avl.get_value_by_closest_match(71), 99)
        self.assertEqual(self.avl.get_value_by_closest_match(95), 22)
        self.assertEqual(self.avl.get_closest_element_position(21), 1)
        self.assertEqual(self.avl.get_closest_element_position(98), 3)
        self.avl.clear()
        self.assertIsNone(self.avl.get_value_by_closest_match(111))