def test_isempty(self): tree = Bst() self.assertTrue(tree.isempty()) ARBITRARY_SIZE = 5 tree.size = ARBITRARY_SIZE self.assertFalse(tree.isempty())
def remove_one_child_root(): """Removing root in a tree where the root has only one child""" tree = Bst() tree.add(ROOT_DATA) tree.add(LEFT_DATA) self.assertFalse(tree.isempty()) self.assertEquals(tree.getsize(), 2) self.assertEquals(tree.root.getleft().getdata(), LEFT_DATA) val = tree.remove(ROOT_DATA) self.assertFalse(tree.isempty()) self.assertEquals(tree.getsize(), 1) self.assertEquals(val, ROOT_DATA) self.assertIsNotNone(tree.root) self.assertNotEquals(tree.root.getdata(), ROOT_DATA) self.assertEquals(tree.root, Node(LEFT_DATA))
def test_contains(self): # Test with a root only tree = root_only() self.assertFalse(tree.isempty()) self.assertEquals(tree.getsize(), 1) self.assertIsNotNone(tree.root) self.assertEquals(tree.root.getdata(), ROOT_DATA) # Should contain the root data self.assertTrue(tree.contains(ROOT_DATA)) # Should not contain any of the children data self.assertFalse(tree.contains(LEFT_DATA)) self.assertFalse(tree.contains(RIGHT_DATA)) # Should not contain any of the grandchildren data self.assertFalse(tree.contains(LL_DATA)) self.assertFalse(tree.contains(LR_DATA)) self.assertFalse(tree.contains(RL_DATA)) self.assertFalse(tree.contains(RR_DATA)) tree.remove(ROOT_DATA) self.assertTrue(tree.isempty()) self.assertIsNone(tree.root) self.assertFalse(tree.contains(ROOT_DATA)) # Now test with the balanced tree tree = balanced_tree() self.assertFalse(tree.isempty()) self.assertEquals(tree.getsize(), 7) self.assertIsNotNone(tree.root) self.assertEquals(tree.root.getdata(), ROOT_DATA) # Should contain the root data self.assertTrue(tree.contains(ROOT_DATA)) # Should not contain any of the children data self.assertTrue(tree.contains(LEFT_DATA)) self.assertTrue(tree.contains(RIGHT_DATA)) # Should not contain any of the grandchildren data self.assertTrue(tree.contains(LL_DATA)) self.assertTrue(tree.contains(LR_DATA)) self.assertTrue(tree.contains(RL_DATA)) self.assertTrue(tree.contains(RR_DATA)) TO_ADD_DATA = 50 self.assertFalse(tree.contains(TO_ADD_DATA)) tree.add(TO_ADD_DATA) self.assertTrue(tree.getsize(), 8) self.assertTrue(tree.contains(TO_ADD_DATA)) # Finally, test with an empty tree tree = Bst() self.assertTrue(tree.isempty()) self.assertIsNone(tree.root) # Should not contain the root data self.assertFalse(tree.contains(ROOT_DATA)) # Should not contain any of the children data self.assertFalse(tree.contains(LEFT_DATA)) self.assertFalse(tree.contains(RIGHT_DATA)) # Should not contain any of the grandchildren data self.assertFalse(tree.contains(LL_DATA)) self.assertFalse(tree.contains(LR_DATA)) self.assertFalse(tree.contains(RL_DATA)) self.assertFalse(tree.contains(RR_DATA))