def test_delete(self): print("\n") print("delete function") t = lab2.Tree() t.insert(8) t.insert(3) t.insert(10) t.insert(1) t.insert(6) t.insert(4) t.insert(7) t.insert(14) t.insert(13) l1 = [node for node in t] t.delete(7) l2 = [node for node in t] t.delete(6) l3 = [node for node in t] t.delete(8) l4 = [node for node in t] t.delete(10) l5 = [node for node in t] self.assertEqual(l1, [1, 3, 4, 6, 7, 8, 10, 13, 14]) self.assertEqual(l2, [1, 3, 4, 6, 8, 10, 13, 14]) self.assertEqual(l3, [1, 3, 4, 8, 10, 13, 14]) self.assertEqual(l4, [1, 3, 4, 10, 13, 14]) self.assertEqual(l5, [1, 3, 4, 13, 14]) print("\n")
def test_traversal(self): print("\n") print("Checking all the three traversals") t = lab2.Tree() t.insert(4) t.insert(2) t.insert(6) t.insert(1) t.insert(3) t.insert(5) t.insert(7) tree_iterator = [node for node in t] inorder = [node for node in t.inorder()] preorder = [node for node in t.preorder()] postorder = [node for node in t.postorder()] print("__iter__(): inorder traversal") self.assertEqual(tree_iterator, [1, 2, 3, 4, 5, 6, 7]) print("inorder traversal") self.assertEqual(inorder, [1, 2, 3, 4, 5, 6, 7]) print("preorder traversal") self.assertEqual(preorder, [4, 2, 1, 3, 6, 5, 7]) print("postorder traversal") self.assertEqual(postorder, [1, 3, 2, 5, 7, 6, 4]) print("\n")
def test_tree_insert(self): print("\n") print("tree_insert_skewed") tree = lab2.Tree() for i in range(1, 8): tree.insert(i) list_tree = [node for node in tree] last_node = tree.root.right.right.right.right.right.right.data self.assertEqual(list_tree, [1, 2, 3, 4, 5, 6, 7]) self.assertEqual(last_node, 7) print("\n")
def test_contains(self): print("\n") print("contains function") t = lab2.Tree() t.insert(8) t.insert(3) t.insert(10) t.insert(1) t.insert(6) t.insert(4) t.insert(7) t.insert(14) t.insert(13) self.assertEqual(t.contains(13), True) self.assertEqual(t.contains(15), False) print("\n")
def test_min_and_max(self): print("\n") print("Checking the min and the max functions") t = lab2.Tree() t.insert(4) t.insert(2) t.insert(6) t.insert(1) t.insert(3) t.insert(5) t.insert(7) minimum = t.min() self.assertEqual(minimum.data, 1) maximum = t.max() self.assertEqual(maximum.data, 7) print("\n")
def test_empty_tree(self): print("\n") print("empty tree") t1 = lab2.Tree() empty_list1 = [node for node in t1] empty_list2 = [node for node in t1.inorder()] empty_list3 = [node for node in t1.preorder()] empty_list4 = [node for node in t1.postorder()] self.assertEqual(t1.min(), None) self.assertEqual(t1.max(), None) self.assertEqual(empty_list1, []) self.assertEqual(empty_list2, []) self.assertEqual(empty_list3, []) self.assertEqual(empty_list4, []) with self.assertRaises(KeyError): t1.find_successor(4) t1.delete(5) print("\n")
def test_tree_insert_individual_check(self): print("\n") print("tree_insert_with_individual_check") t = lab2.Tree() t.insert(4) t.insert(2) t.insert(6) t.insert(1) t.insert(3) t.insert(5) t.insert(7) self.assertEqual(t.root.data, 4) self.assertEqual(t.root.left.data, 2) self.assertEqual(t.root.left.left.data, 1) self.assertEqual(t.root.left.right.data, 3) self.assertEqual(t.root.right.data, 6) self.assertEqual(t.root.right.left.data, 5) self.assertEqual(t.root.right.right.data, 7) print("\n")
def test_successor(self): print("\n") print("successor function") tree_success = lab2.Tree() tree_success.insert(8) tree_success.insert(3) tree_success.insert(10) tree_success.insert(1) tree_success.insert(6) tree_success.insert(4) tree_success.insert(7) tree_success.insert(14) tree_success.insert(13) easy_success = tree_success.find_successor(8).data medium_success = tree_success.find_successor(10).data tough_success = tree_success.find_successor(7).data self.assertEqual(easy_success, 10) self.assertEqual(medium_success, 13) self.assertEqual(tough_success, 8) print("\n")