class TreeOrderTestCase(unittest.TestCase): def setUp(self): self.tree = Tree(1) self.tree.left = Tree(2) self.tree.right = Tree(3) self.tree.right.left = Tree(4) self.tree.right.right = Tree(5) def test_preorder_tree(self): self.assertEqual(list(self.tree.preorder()), [1, 2, 3, 4, 5]) def test_postorder_tree(self): self.assertEqual(list(self.tree.postorder()), [2, 4, 5, 3, 1]) def test_inorder_tree(self): self.assertEqual(list(self.tree.inorder()), [2, 1, 4, 3, 5])
class TestTree(unittest.TestCase): def setUp(self): self.tree = Tree() def testInsertSingleValue(self): self.tree.insert(1) def testInsertTwoValues(self): self.tree.insert(1) self.tree.insert(2) self.assertEqual(self.tree.root.data, 1) self.assertEqual(self.tree.root.right.data, 2) def testInsertTreeValues(self): self.tree.insert(1) self.tree.insert(2) self.tree.insert(3) self.assertEqual(self.tree.root.data, 1) self.assertEqual(self.tree.root.right.data, 2) self.assertEqual(self.tree.root.right.right.data, 3) def testMakeSearchTree(self): self.tree.insert(2) self.tree.insert(1) self.tree.insert(3) self.assertEqual(self.tree.root.data, 2) self.assertEqual(self.tree.root.left.data, 1) self.assertEqual(self.tree.root.right.data, 3) def decrement(value): return value - 1 def increment(value): return value + 1 def testPreorderTraversalManipulations(self): self.tree.insert(2) self.tree.insert(1) self.tree.insert(3) self.tree.insert(4) self.tree.preorder(TestTree.increment) self.assertEqual(self.tree.root.data, 3) self.assertEqual(self.tree.root.left.data, 2) self.assertEqual(self.tree.root.right.data, 4) self.assertEqual(self.tree.root.right.right.data, 5) def testInOrderTraversalManupulations(self): self.tree.insert(2) self.tree.insert(1) self.tree.insert(3) self.tree.insert(4) self.tree.inorder(TestTree.decrement) self.assertEqual(self.tree.root.data, 1) self.assertEqual(self.tree.root.left.data, 0) self.assertEqual(self.tree.root.right.data, 2) self.assertEqual(self.tree.root.right.right.data, 3) def testPostOrderTraversalManipulations(self): self.tree.insert(2) self.tree.insert(1) self.tree.insert(3) self.tree.insert(4) self.tree.postorder(TestTree.decrement) self.tree.postorder(TestTree.decrement) self.assertEqual(self.tree.root.data, 0) self.assertEqual(self.tree.root.left.data, -1) self.assertEqual(self.tree.root.right.data, 1) self.assertEqual(self.tree.root.right.right.data, 2) def testPreOrderTraversalPure(self): self.tree.insert(2) self.tree.insert(1) self.tree.insert(3) self.tree.insert(4) self.tree.preorder(TestTree.decrement, False) self.assertEqual(self.tree.root.data, 2) self.assertEqual(self.tree.root.left.data, 1) self.assertEqual(self.tree.root.right.data, 3) self.assertEqual(self.tree.root.right.right.data, 4) def testInOrderTraversalPure(self): self.tree.insert(2) self.tree.insert(1) self.tree.insert(3) self.tree.insert(4) self.tree.inorder(TestTree.increment, False) self.assertEqual(self.tree.root.data, 2) self.assertEqual(self.tree.root.left.data, 1) self.assertEqual(self.tree.root.right.data, 3) self.assertEqual(self.tree.root.right.right.data, 4) def testPostOrderTraversalPure(self): self.tree.insert(2) self.tree.insert(1) self.tree.insert(3) self.tree.insert(4) self.tree.postorder(TestTree.decrement, False) self.assertEqual(self.tree.root.data, 2) self.assertEqual(self.tree.root.left.data, 1) self.assertEqual(self.tree.root.right.data, 3) self.assertEqual(self.tree.root.right.right.data, 4)