def test_self_balancing_insert_left_right_rotation1(self): set = PersistentBalancedSet( 11, iterator='preorder').insert(8).insert(13).insert(9).insert(4) self.assertEqual(set, [11, 8, 4, 9, 13]) set = set.insert(1) self.assertEqual(set, [8, 4, 1, 11, 9, 13]) set = set.insert(2) set = set.insert(3).insert(12).insert(14) self.assertEqual(set, [8, 2, 1, 4, 3, 11, 9, 13, 12, 14])
def test__insert(self): set = PersistentBalancedSet() set.insert(5) self.assertEqual(set, [5]) set = set.insert(4) self.assertEqual(set, [4, 5]) set = set.insert(8) self.assertEqual(set, [4, 5, 8]) set = set.insert(3) set = set.insert(6) self.assertEqual(set, [3, 4, 5, 6, 8])
def test_calculate_balance_factor(self): set = PersistentBalancedSet(9).insert(5).insert(1).insert(6).insert(10) set = set.insert(11).insert(13) balanceFactor = [] for node in set._PersistentBalancedSet__root: balanceFactor.append(height(node)) self.assertEqual(balanceFactor, [3, 2, 1, 1, 2, 1, 1])
def test_self_balancing_insert_left_right_rotation(self): set1 = PersistentBalancedSet(55, iterator='preorder') set2 = set1.insert(56) set3 = set2.insert(57).insert(54).insert(58).insert(59).insert(53) self.assertEqual(set1, [55]) self.assertEqual(set2, [55, 56]) self.assertEqual(set3, [56, 54, 53, 55, 58, 57, 59])
def test_self_balancing_insert_right_rotation(self): set1 = PersistentBalancedSet(55, iterator='preorder') set2 = set1.insert(54) set3 = set2.insert(53) self.assertEqual(set1, [55]) self.assertEqual(set2, [55, 54]) self.assertEqual(set3, [54, 53, 55])
def test_insert_for_sharing(self): set = PersistentBalancedSet('d').insert('b').insert('g').insert( 'h').insert('f').insert('a').insert('c') self.assertEqual(set, ['a', 'b', 'c', 'd', 'f', 'g', 'h']) set1 = set.insert('e') self.assertEqual(set, ['a', 'b', 'c', 'd', 'f', 'g', 'h']) self.assertEqual(set1, ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
def test_insert_for_immutability(self): set = PersistentBalancedSet(10) set1 = set.insert(2) set2 = set.insert(8) set3 = set2.insert(2) self.assertEqual(set, [10]) self.assertEqual(set1, [2, 10]) self.assertEqual(set2, [8, 10]) self.assertEqual(set3, [2, 8, 10])
def test_self_balancing_delete2(self): set1 = PersistentBalancedSet(55) set2 = set1.insert(56) set3 = set2.insert(57).insert(54).insert(58).insert(59).insert(53) set4 = set2.delete(56) set5 = set3.delete(53) self.assertEqual(set1, [55]) self.assertEqual(set2, [55, 56]) self.assertEqual(set3, [53, 54, 55, 56, 57, 58, 59]) self.assertEqual(set4, [55]) self.assertEqual(set5, [54, 55, 56, 57, 58, 59])
def test_balancer_left_right_rotation1(self): balancedSet = PersistentBalancedSet(11, iterator='preorder').insert( 8).insert(13).insert(9).insert(4).insert(1).insert(2) balancedSet = balancedSet.insert(3).insert(12).insert(14) self.assertEqual(balancedSet, [8, 2, 1, 4, 3, 11, 9, 13, 12, 14])
def test2_preorder_iteration(self): set = PersistentBalancedSet(45, iterator='preorder').insert(44).insert( 46).insert(48).insert(47).insert(41).insert(50) set = set.insert(49) self.assertEqual(set, [46, 44, 41, 45, 48, 47, 50, 49])
def test_preorder_iteration(self): set = PersistentBalancedSet(55, iterator='preorder').insert(56).insert( 57).insert(58).insert(59).insert(51).insert(50) set = set.insert(49) self.assertEqual(set, [57, 55, 50, 49, 51, 56, 58, 59])