def test_self_balancing_insert_left_rotation(self): set1 = UnbalancedSet(55, iterator='preorder') set2 = set1.bInsert(56) set3 = set2.bInsert(57) self.assertEqual(set1, [55]) self.assertEqual(set2, [55, 56]) self.assertEqual(set3, [56, 55, 57])
def test_self_balancing_insert_right_rotation(self): set1 = UnbalancedSet(55, iterator='preorder') set2 = set1.bInsert(54) set3 = set2.bInsert(53) self.assertEqual(set1, [55]) self.assertEqual(set2, [55, 54]) self.assertEqual(set3, [54, 53, 55])
def test_self_balancing_insert_left_right_rotation(self): set1 = UnbalancedSet(55, iterator='preorder') set2 = set1.bInsert(56) set3 = set2.bInsert(57).bInsert(54).bInsert(58).bInsert(59).bInsert(53) self.assertEqual(set1, [55]) self.assertEqual(set2, [55, 56]) self.assertEqual(set3, [56, 54, 53, 55, 58, 57, 59])
def test_calculate_balance_factor(self): set = UnbalancedSet(9).insert(5).insert(1).insert(6).insert(10) set = set.insert(11).insert(13) balanceFactor = [] for node in set._UnbalancedSet__root: balanceFactor.append(height(node)) self.assertEqual(balanceFactor, [1, 2, 1, 4, 3, 2, 1])
def test_substract2(self): set1 = UnbalancedSet(5, iterator='preorder').insert(6).insert(7) set2 = UnbalancedSet(5, iterator='preorder').insert(6) balancedSet = set1 - set2 self.assertEqual(set1, [5, 6, 7]) self.assertEqual(set2, [5, 6]) self.assertEqual(balancedSet, [7])
def test_difference2(self): set1 = UnbalancedSet(5, iterator='preorder').insert(6).insert(7) set2 = UnbalancedSet(5, iterator='preorder').insert(6) balancedSet = set1.difference(set2) self.assertEqual(set1, [5, 6, 7]) self.assertEqual(set2, [5, 6]) self.assertEqual(balancedSet, [7])
def test_balancer_left_right_rotation1(self): set = UnbalancedSet(11, iterator='preorder').insert(8).insert( 13).insert(9).insert(4).insert(1).insert(2) set = set.insert(3).insert(12).insert(14) balancedSet = set.balancer() self.assertEqual(set, [11, 8, 4, 1, 2, 3, 9, 13, 12, 14]) self.assertEqual(balancedSet, [8, 2, 1, 3, 4, 13, 11, 9, 12, 14])
def test_add(self): set1 = UnbalancedSet(5, iterator='preorder').insert(6).insert(7) set2 = UnbalancedSet(3).insert(2).insert(1) balancedSet = set1 + set2 self.assertEqual(set1, [5, 6, 7]) self.assertEqual(set2, [1, 2, 3]) self.assertEqual(balancedSet, [5, 2, 1, 3, 6, 7])
def test_union1(self): set1 = UnbalancedSet(5, iterator='preorder').insert(6).insert(7) set2 = None balancedSet = set1.union(set2) self.assertEqual(set1, [5, 6, 7]) self.assertEqual(set2, None) self.assertEqual(balancedSet, [5, 6, 7])
def test_balancer(self): set1 = UnbalancedSet(5, iterator='preorder').insert(6).insert( 7).insert(4).insert(2).insert(1) set1 = set1.insert(57).insert(36).insert(67).insert(24).insert( 72).insert(4) set2 = set1.balancer() self.assertEqual(set1, [5, 4, 2, 1, 6, 7, 57, 36, 24, 67, 72]) self.assertEqual(set2, [6, 2, 1, 4, 5, 57, 24, 7, 36, 67, 72])
def test_add2(self): set1 = UnbalancedSet(5, iterator='preorder').insert(6).insert( 7).insert(4).insert(2).insert(1) set2 = UnbalancedSet(57, iterator='preorder').insert(36).insert( 67).insert(24).insert(72).insert(4) balancedSet = set1 - set2 self.assertEqual(set1, [5, 4, 2, 1, 6, 7]) self.assertEqual(set2, [57, 36, 24, 4, 67, 72]) self.assertEqual(balancedSet, [5, 2, 1, 6, 7])
def test_insert_for_sharing(self): set = UnbalancedSet('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_substracts3(self): set1 = UnbalancedSet(5, iterator='inorder').insert(6).insert(7).insert( 4).insert(2).insert(1) set2 = UnbalancedSet(57, iterator='preorder').insert(36).insert( 67).insert(24).insert(72).insert(4) balancedSet = set1 - set2 self.assertEqual(set1, [1, 2, 4, 5, 6, 7]) self.assertEqual(set2, [57, 36, 24, 4, 67, 72]) self.assertEqual(balancedSet, [1, 2, 5, 6, 7])
def test_insert_for_immutability(self): set = UnbalancedSet(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_substract(self): set1 = UnbalancedSet(5, iterator='preorder').insert(6).insert(7) set2 = UnbalancedSet(3).insert(2).insert(1) set3 = UnbalancedSet(5) balancedSet = set1 - set2 balancedSet1 = set1 - set3 self.assertEqual(set1, [5, 6, 7]) self.assertEqual(set2, [1, 2, 3]) self.assertEqual(balancedSet, [6, 5, 7]) self.assertEqual(balancedSet1, [6, 7])
def test_self_balancing_insert_left_right_rotation1(self): set = UnbalancedSet( 11, iterator='preorder').bInsert(8).bInsert(13).bInsert(9).bInsert(4) self.assertEqual(set, [11, 8, 4, 9, 13]) set = set.bInsert(1) self.assertEqual(set, [8, 4, 1, 11, 9, 13]) set = set.bInsert(2) set = set.bInsert(3).bInsert(12).bInsert(14) self.assertEqual(set, [8, 2, 1, 4, 3, 11, 9, 13, 12, 14])
def test_self_balancing_delete2(self): set1 = UnbalancedSet(55) set2 = set1.insert(56) set3 = set2.insert(57).insert(54).insert(58).insert(59).insert(53) set4 = set2.bDelete(56) set5 = set3.bDelete(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_self_balancing_delete1(self): set1 = UnbalancedSet(55, iterator='preorder') set2 = set1.bInsert(56) set3 = set2.bInsert(57).bInsert(54).bInsert(58).bInsert(59).bInsert(53) set4 = set2.bDelete(56) set5 = set3.bDelete(53) self.assertEqual(set1, [55]) self.assertEqual(set2, [55, 56]) self.assertEqual(set3, [56, 54, 53, 55, 58, 57, 59]) self.assertEqual(set4, [55]) self.assertEqual(set5, [56, 54, 55, 58, 57, 59])
def test_calculate_balance_2(self): set = UnbalancedSet(55).insert(56).insert(57).insert(58).insert( 59).insert(51).insert(50).insert(49) height1 = [] for node in set._UnbalancedSet__root: height1.append(height(node)) self.assertEqual(height1, [1, 2, 3, 5, 4, 3, 2, 1])
def test_calculate_balance_factor_all_right_nodes_one_left(self): set = UnbalancedSet(55).insert(56).insert(57).insert(58).insert( 59).insert(51) balanceFactors = [] for node in set._UnbalancedSet__root: balanceFactors.append(height(node)) self.assertEqual(balanceFactors, [1, 5, 4, 3, 2, 1])
def test3_preorder_iteration_and_height(self): set = UnbalancedSet(30, iterator='preorder').insert(10).insert(20) self.assertEqual(set, [30, 10, 20]) height1 = [] for node in set._UnbalancedSet__root: height1.append(height(node)) self.assertEqual(height1, [3, 2, 1])
def test_calculate_balance_factor_all_left_nodes(self): set = UnbalancedSet(55).insert(54).insert(53).insert(52).insert(51) balanceFactors = [] node_values = [] for node in set._UnbalancedSet__root: node_values.append(node.value) balanceFactors.append(height(node)) self.assertEqual(balanceFactors, [1, 2, 3, 4, 5]) self.assertEqual(node_values, [51, 52, 53, 54, 55])
def test_balanced_delete3(self): unbalancedSet = UnbalancedSet(5, iterator='preorder').insert(4).insert( 3).insert(3.5).insert(3.6).insert(6) balancedSet = unbalancedSet.bDelete(3.6) self.assertEqual(unbalancedSet, [5, 4, 3, 3.5, 3.6, 6]) self.assertEqual(balancedSet, [5, 3.5, 3, 4, 6]) balancedSet1 = balancedSet.bDelete(6) self.assertEqual(unbalancedSet, [5, 4, 3, 3.5, 3.6, 6]) self.assertEqual(balancedSet, [5, 3.5, 3, 4, 6]) self.assertEqual(balancedSet1, [3.5, 3, 4, 5]) balancedSet2 = balancedSet1.bDelete(3.5) self.assertEqual(unbalancedSet, [5, 4, 3, 3.5, 3.6, 6]) self.assertEqual(balancedSet, [5, 3.5, 3, 4, 6]) self.assertEqual(balancedSet1, [3.5, 3, 4, 5]) self.assertEqual(balancedSet2, [4, 3, 5]) balancedSet3 = balancedSet2.bDelete(4) self.assertEqual(unbalancedSet, [5, 4, 3, 3.5, 3.6, 6]) self.assertEqual(balancedSet, [5, 3.5, 3, 4, 6]) self.assertEqual(balancedSet1, [3.5, 3, 4, 5]) self.assertEqual(balancedSet2, [4, 3, 5]) self.assertEqual(balancedSet3, [3, 5]) balancedSet4 = balancedSet3.bDelete(3) self.assertEqual(unbalancedSet, [5, 4, 3, 3.5, 3.6, 6]) self.assertEqual(balancedSet, [5, 3.5, 3, 4, 6]) self.assertEqual(balancedSet1, [3.5, 3, 4, 5]) self.assertEqual(balancedSet2, [4, 3, 5]) self.assertEqual(balancedSet3, [3, 5]) self.assertEqual(balancedSet4, [5]) balancedSet5 = balancedSet4.bDelete(5) self.assertEqual(unbalancedSet, [5, 4, 3, 3.5, 3.6, 6]) self.assertEqual(balancedSet, [5, 3.5, 3, 4, 6]) self.assertEqual(balancedSet1, [3.5, 3, 4, 5]) self.assertEqual(balancedSet2, [4, 3, 5]) self.assertEqual(balancedSet3, [3, 5]) self.assertEqual(balancedSet4, [5]) self.assertEqual(balancedSet5, [])
def test_difference(self): set1 = UnbalancedSet(5, iterator='preorder').insert(6).insert(7) set2 = UnbalancedSet(3).insert(2).insert(1) set3 = UnbalancedSet(5) balancedSet = set1.difference(set2) balancedSet1 = set1.difference(set3) self.assertEqual(set1, [5, 6, 7]) self.assertEqual(set2, [1, 2, 3]) self.assertEqual(balancedSet, [6, 5, 7]) self.assertEqual(balancedSet1, [6, 7])
def test__insert(self): set = UnbalancedSet() 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_balancer_left_right_rotation3(self): set = UnbalancedSet(55, iterator='preorder').insert(54).insert( 53).insert(56).insert(57).insert(58) balancedSet = set.balancer() self.assertEqual(set, [55, 54, 53, 56, 57, 58]) self.assertEqual(balancedSet, [55, 54, 53, 57, 56, 58])
def test_existing_member(self): set = UnbalancedSet(1).insert(1) self.assertEqual(set, [1])
def test_self_balancing_delete(self): set = UnbalancedSet( 11, iterator='preorder').bInsert(8).bInsert(13).bInsert(9).bInsert(4) self.assertEqual(set.bDelete(8), [11, 9, 4, 13])
def test_isMember(self): set = UnbalancedSet().insert(5).insert(4).insert(8).insert(3).insert(6) self.assertTrue(set.isMember(3)) self.assertFalse(set.isMember(10))
def test_balanced_delete4(self): unbalancedSet = UnbalancedSet(5, iterator='inorder').insert(4).insert( 3).insert(3.5).insert(3.6).insert(6) balancedSet = unbalancedSet.bDelete(3.6) self.assertEqual(unbalancedSet, [3, 3.5, 3.6, 4, 5, 6]) self.assertEqual(balancedSet, [3, 3.5, 4, 5, 6])