class BinaryTreeTests(unittest.TestCase): def setUp(self): self.tree = Tree(7) def test_insert(self): self.tree.insert(9) self.assertTrue(self.tree.contains(9)) def test_reinsert(self): self.tree.insert(7) self.assertEqual(self.tree.size(), 1) def test_contains_false(self): self.assertFalse(self.tree.contains(6)) def test_size(self): self.assertEqual(self.tree.size(), 1) self.tree.insert(6) self.assertEqual(self.tree.size(), 2) def test_depth(self): self.tree.insert(8) self.tree.insert(9) self.tree.insert(10) self.tree.insert(5) self.assertEqual(self.tree.depth(), 4) def test_balance_pos(self): self.tree.insert(10) self.tree.insert(8) self.tree.insert(9) self.assertEqual(self.tree.balance(), 3) def test_balance_neg(self): self.tree.insert(1) self.tree.insert(2) self.tree.insert(9) self.assertEqual(self.tree.balance(), -1) def test_balance_even(self): self.tree.insert(10) self.tree.insert(4) self.assertEqual(self.tree.balance(), 0)
class DeleteTests(unittest.TestCase): def setUp(self): self.tree = Tree(10) for i in [5, 15, 4, 6, 14, 17]: self.tree.insert(i) def test_delete_two_child(self): self.assertTrue(self.tree.contains(5)) self.tree.delete(5) self.assertFalse(self.tree.contains(5)) self.assertTrue(self.tree.contains(4)) def test_delete_single_child(self): self.tree.insert(3) self.assertTrue(self.tree.contains(4)) self.tree.delete(4) self.assertFalse(self.tree.contains(4)) self.assertTrue(self.tree.contains(3)) def test_delete_no_child(self): self.assertTrue(self.tree.contains(4)) self.tree.delete(4) self.assertFalse(self.tree.contains(4))