def test_get_node_error(self): tree = BST() tree.add_value(100) tree.add_value(80) tree.add_value(90) tree.add_value(200) tree.add_value(70) self.assertRaises(MissingValueError, tree.get_node, 50)
def returnBST(filepath) -> BST: newbst = BST(key=lambda x: x.amount) with open(filepath) as inputfile: for i in inputfile: name, value = i.split(sep=":") newdonor = Donor(name, value) newbst.add_value(newdonor) return newbst
def testHeight(self): tree = BST() tree.add_value(50) tree.add_value(25) tree.add_value(100) tree.add_value(10) tree.add_value(150) heightOfTree = tree.height self.assertEqual(heightOfTree, 2)
def test_remove_root_with_two_children(self): tree = BST() fill_int_tree(tree) tree.remove_value(100) root = BSTNode(200) root.left = BSTNode(80) root.left.left = BSTNode(70) root.left.right = BSTNode(90) cmp_tree = BST(root) self.assertEqual(tree, cmp_tree)
def test_create_tree(self): tree = BST() fill_int_tree(tree) root = BSTNode(100) root.left = BSTNode(80) root.right = BSTNode(200) root.left.left = BSTNode(70) root.left.right = BSTNode(90) cmp_tree = BST(root) self.assertEqual(tree, cmp_tree)
def test_tree_not_eq(self): tree = BST() fill_int_tree(tree) root = BSTNode(100) root.left = BSTNode(80) root.right = BSTNode(200) root.left.left = BSTNode(70) root.left.right = BSTNode(92) cmp_tree = BST(root) cmp_tree._num_nodes = 5 self.assertNotEqual(tree, cmp_tree)
def test_remove_root_one_children(self): tree = BST() tree.add_value(100) tree.add_value(50) print("tree length:", len(tree)) tree.remove_value(100) print("tree length after:", len(tree)) self.assertEqual(1, len(tree))
def test_len(self): tree = BST() fill_int_tree(tree) self.assertEqual(tree.get_max_node().value, 200) self.assertEqual(len(tree), 5) tree.remove_value(80) self.assertEqual(len(tree), 4) tree.remove_value(200) self.assertEqual(len(tree), 3) self.assertEqual(tree.get_max_node().value, 100)
def test_duplicate_insert(self): tree = BST() fill_int_tree(tree) self.assertEqual(len(tree), 5) tree.add_value(80) self.assertEqual(len(tree), 6) tree.add_value(80) self.assertEqual(len(tree), 7)
def test_add_node_with_two_children(self): a = BSTNode(50) b = BSTNode(40) c = BSTNode(35) d = BSTNode(37) e = BSTNode(45) f = BSTNode(90) g = BSTNode(150) a.left = b b.left = c c.right = d b.right = e m = BSTNode(65, children = [a,f]) tree1 = BST(m) self.assertEqual(len(tree1), 7)
def test_add_parent(self): a = BSTNode(50) b = BSTNode(40) c = BSTNode(35) d = BSTNode(37) e = BSTNode(45) f = BSTNode(90) g = BSTNode(150) a.left = b b.left = c c.right = d b.right = e p = BSTNode(200) n = BSTNode(75, children = [f, g], parent = p) tree2 = BST(p) self.assertEqual(len(tree2), 4)
def testRemoveValueInnerNodeWithTwoChildren(self): # removing an inner node with two children- node with a value of 250 tree = BST() tree.add_value(300) tree.add_value(250) tree.add_value(500) tree.add_value(225) tree.add_value(275) otherTree = BST() otherTree.add_value(300) otherTree.add_value(500) otherTree.add_value(225) otherTree.add_value(275) tree.remove_value(250) self.assertEqual(tree, otherTree)
def testRemoveValueWithTwoChildren(self): tree = BST() tree.add_value(300) tree.add_value(250) tree.add_value(500) tree.add_value(225) tree.add_value(275) otherTree = BST() otherTree.add_value(275) otherTree.add_value(250) otherTree.add_value(500) otherTree.add_value(225) # tree.printPreorder(root=tree.root) # print(tree.__len__()) ## should print 13 # tree.remove_value(300) # print() # tree.printPreorder(root=tree.root) # print(tree.__len__()), ## should print 12 self.assertEqual(tree, otherTree) # treeLength = self.assertEqual(tree.__len__(), otherTree.__len__())
def test_create_tree(self): tree = BST() tree.add_value(100) tree.add_value(80) tree.add_value(200) tree.add_value(90) tree.add_value(70) root = BSTNode(100) root.left = BSTNode(80) root.right = BSTNode(200) root.left.left = BSTNode(70) root.left.right = BSTNode(90) cmp_tree = BST(root) self.assertEqual(tree, cmp_tree) # but we don't pass this
def test_create_tree(self): tree = BST() tree.add_value(100) tree.add_value(80) tree.add_value(200) tree.add_value(90) tree.add_value(70) root = BSTNode(100) root.left = BSTNode(80) root.right = BSTNode(200) root.left.left = BSTNode(70) root.left.right = BSTNode(90) cmp_tree = BST(root) self.assertEqual(tree, cmp_tree) self.assertEqual(tree.height, 2) self.assertEqual(len(tree), 5)
def testRemoveValueWithOneChildRightSide(self): tree = BST() tree.add_value(100) tree.add_value(50) tree.add_value(125) tree.add_value(200) otherTree = BST() otherTree.add_value(100) otherTree.add_value(50) otherTree.add_value(200) # remove value 125 from tree and compare to otherTree tree.remove_value(125) self.assertEqual(tree, otherTree)
def testRemoveValueWithNoChildren(self): tree = BST() tree.add_value(100) tree.add_value(50) tree.add_value(125) tree.add_value(200) otherTree = BST() otherTree.add_value(100) otherTree.add_value(50) otherTree.add_value(125) # remove a leaf node (a node with no children) tree.remove_value(200) self.assertEqual(tree, otherTree)
def test_remove_node_failure(self): tree = BST() fill_int_tree(tree) self.assertRaises(MissingValueError, tree.remove_value, 60)
def testRemoveValueWeirdTree(self): tree = BST() tree.add_value(100) tree.add_value(50) tree.add_value(150) tree.add_value(125) tree.add_value(120) tree.add_value(125) tree.add_value(127) tree.add_value(126) otherTree = BST() otherTree.add_value(100) otherTree.add_value(50) otherTree.add_value(150) otherTree.add_value(125) otherTree.add_value(120) otherTree.add_value(125) otherTree.add_value(126) # remove 127 from tree tree.remove_value(127) self.assertEqual(tree, otherTree)
def test_str_trees(self): tree = BST(None, lambda x: x.lower()) fill_str_tree(tree) value_node = tree.get_node("orange") self.assertEqual(value_node.value, "Orange")
def testGetMinNode(self): tree = BST() tree.add_value(50) tree.add_value(25) tree.add_value(100) tree.add_value(10) tree.add_value(150) minNode = tree.get_min_node() self.assertEqual(minNode.value, 10)
def test_get_node(self): tree = BST() fill_int_tree(tree) value_node = tree.get_node(80) self.assertEqual(value_node.value, 80)
def testGetNode(self): tree = BST() tree.add_value(200) tree.add_value(100) tree.add_value(300) tree.add_value(50) tree.add_value(110) tree.add_value(250) tree.add_value(500) tree.add_value(25) tree.add_value(75) tree.add_value(105) tree.add_value(150) tree.add_value(225) tree.add_value(275) retrievedNode = tree.get_node(105) self.assertEqual(retrievedNode.value, 105)
def test_get_node_failure(self): tree = BST() fill_int_tree(tree) self.assertRaises(MissingValueError, tree.get_node, 50)
def testRemoveValueWithNoChildrenXD(self): tree = BST() tree.add_value(250) tree.add_value(225) tree.add_value(275) otherTree = BST() otherTree.add_value(250) otherTree.add_value(275) # remove a left leaf tree.remove_value(225) self.assertEqual(tree, otherTree)
def test_get_min_node(self): tree = BST() fill_int_tree(tree) self.assertEqual(tree.get_min_node().value, 70)
def test_delete_4(self): tree = BST() tree.add_value(100) tree.add_value(80) tree.add_value(200) tree.add_value(300) tree.add_value(150) tree.remove_value(200) root = BSTNode(100) root.left = BSTNode(80) root.right = BSTNode(150) root.right.right = BSTNode(300) cmp_tree = BST(root) self.assertEqual(tree, cmp_tree)
def test_len(self): tree = BST() fill_int_tree(tree) self.assertEqual(len(tree), 5)
def test_create_empty_tree(self): tree = BST() self.assertEqual(len(tree), 0) self.assertIsNone(tree.root)
def test_height(self): tree = BST() fill_int_tree(tree) self.assertEqual(tree.height, 2)