def test_tree_insertion_equal_node(self): tree = Tree() tree.insert(Node.factory(12)) tree.insert(Node.factory(12)) self.assertIsNotNone(tree.root_node) self.assertIsNotNone(tree.root_node.value) self.assertEqual(12, tree.root_node.value) self.assertIsNone(tree.root_node.left.value) self.assertIsNone(tree.root_node.right.value)
def test_node_assignment(self): node1 = Node.factory(25) node2 = Node.factory(None) self.assertIsNone(node2.value) self.assertIsNone(node2.left.value) self.assertIsNone(node2.right.value) node2.assign(node1) self.assertEqual(25, node2.value) self.assertIsNone(node2.left.value) self.assertIsNone(node2.right.value) node1.left = Node.factory(15) node1.right = Node.factory(35) node2.assign(node1) self.assertEqual(25, node2.value) self.assertEqual(15, node2.left.value) self.assertEqual(35, node2.right.value)
def test_tree_multi_level_insertion(self): tree = Tree() tree.insert(Node.factory(12)) tree.insert(Node.factory(12)) tree.insert(Node.factory(10)) tree.insert(Node.factory(11)) tree.insert(Node.factory(1)) tree.insert(Node.factory(100)) self.assertEqual(12, tree.root_node.value) self.assertEqual(100, tree.root_node.right.value) self.assertEqual(10, tree.root_node.left.value) self.assertEqual(11, tree.root_node.left.right.value) self.assertEqual(1, tree.root_node.left.left.value)
def test_deletion_leaf_node(self): tree = Tree() tree.insert(Node.factory(12)) tree.insert(Node.factory(10)) tree.insert(Node.factory(11)) tree.insert(Node.factory(1)) tree.insert(Node.factory(100)) tree.delete(Node.factory(1)) self.assertTrue(tree.search(Node.factory(12))) self.assertTrue(tree.search(Node.factory(10))) self.assertTrue(tree.search(Node.factory(11))) self.assertFalse(tree.search(Node.factory(1))) self.assertTrue(tree.search(Node.factory(100))) self.assertEqual(12, tree.root_node.value) self.assertEqual(100, tree.root_node.right.value) self.assertEqual(10, tree.root_node.left.value) self.assertEqual(11, tree.root_node.left.right.value) self.assertEqual(None, tree.root_node.left.left.value) self.assertFalse(tree.root_node.left.left.value == 1)
def test_tree_search(self): tree = Tree() tree.insert(Node.factory(12)) tree.insert(Node.factory(12)) tree.insert(Node.factory(10)) tree.insert(Node.factory(11)) tree.insert(Node.factory(1)) tree.insert(Node.factory(100)) self.assertTrue(tree.search(Node.factory(12))) self.assertTrue(tree.search(Node.factory(10))) self.assertTrue(tree.search(Node.factory(11))) self.assertTrue(tree.search(Node.factory(1))) self.assertTrue(tree.search(Node.factory(100))) self.assertFalse(tree.search(Node.factory(None))) self.assertFalse(tree.search(Node.factory(123))) self.assertFalse(tree.search(Node.factory(0))) self.assertFalse(tree.search(Node.factory(-01))) self.assertFalse(tree.search(Node.factory(1001)))
def test_deletion_node_with_two_children(self): tree = Tree() tree.insert(Node.factory(12)) tree.insert(Node.factory(10)) tree.insert(Node.factory(11)) tree.insert(Node.factory(1)) tree.insert(Node.factory(100)) tree.insert(Node.factory(99)) tree.delete(Node.factory(10)) self.assertTrue(tree.search(Node.factory(12))) self.assertFalse(tree.search(Node.factory(10))) self.assertTrue(tree.search(Node.factory(11))) self.assertTrue(tree.search(Node.factory(1))) self.assertTrue(tree.search(Node.factory(100))) self.assertTrue(tree.search(Node.factory(99))) self.assertEqual(1, tree.root_node.left.value) self.assertEqual(11, tree.root_node.left.right.value)
def __init__(self, file_path): self.tree = Tree() with open(file_path) as f: for line in f: for word in line.split(): self.tree.insert(Node.factory(WordWrapper(word)))
def test_node_factory(self): node = Node.factory(12) self.assertEqual(12, node.value) self.assertIsNone(node.left.value) self.assertIsNone(node.right.value)
def test_node_factory_none_case(self): self.assertIsNone(Node.factory(None).value) self.assertIsNone(Node.factory(None).left.value) self.assertIsNone(Node.factory(None).right.value)