def _createComplexTree(self): """ Creates the following tree 0: NAME1->NAME3 1: NAME1->NAME2->NAME4 """ self.tree2 = self._AddChild(NAME2, position=1) self.tree3 = self._AddChild(NAME3, position=0) self.tree4 = PositionTree(NAME4) self.tree2.addChild(self.tree4)
def testMoveChildToPosition(self): if IGNORE_TEST: return tree5 = PositionTree(NAME5) self.root.addChild(tree5) new_position = 0 self.root.moveChildToPosition(self.tree2, new_position) self.assertEqual(self.root._children[0], self.tree2) # Make sure it works if nothing is moved new_position = 0 self.root.moveChildToPosition(self.tree2, new_position) self.assertEqual(self.root._children[0], self.tree2) # Move an end tree new_position = 0 self.root.moveChildToPosition(tree5, new_position) self.assertEqual(self.root._children[0], tree5)
def _AddChild(self, name, position=None): new_tree = PositionTree(name) self.root.addChild(new_tree, position=position) return new_tree
def setUp(self): self.root = PositionTree(NAME) self._createComplexTree()
class TestPositionTree(unittest.TestCase): def setUp(self): self.root = PositionTree(NAME) self._createComplexTree() def _AddChild(self, name, position=None): new_tree = PositionTree(name) self.root.addChild(new_tree, position=position) return new_tree def _createComplexTree(self): """ Creates the following tree 0: NAME1->NAME3 1: NAME1->NAME2->NAME4 """ self.tree2 = self._AddChild(NAME2, position=1) self.tree3 = self._AddChild(NAME3, position=0) self.tree4 = PositionTree(NAME4) self.tree2.addChild(self.tree4) def testAddChild(self): if IGNORE_TEST: return self.assertEqual(self.root._children[0], self.tree3) self.assertEqual(self.root._children[1], self.tree2) def testGetChildAtPosition(self): if IGNORE_TEST: return tree3 = self.root.getChildAtPosition(0) self.assertEqual(tree3, self.tree3) tree2 = self.root.getChildAtPosition(1) self.assertEqual(tree2, self.tree2) with self.assertRaises(ValueError): _ = self.root.getChildAtPosition(2) def testGetPosition(self): if IGNORE_TEST: return expected_position = self.root.getPositionOfChild(self.tree2) self.assertEqual(expected_position, self.tree2.getPosition()) self.assertIsNone(self.root.getPosition()) def testGetPositionOfChild(self): if IGNORE_TEST: return position = self.root.getPositionOfChild(self.tree2) self.assertEqual(position, 1) self.assertIsNone(self.root.getPositionOfChild(self.tree4)) def testMoveChildToPosition(self): if IGNORE_TEST: return tree5 = PositionTree(NAME5) self.root.addChild(tree5) new_position = 0 self.root.moveChildToPosition(self.tree2, new_position) self.assertEqual(self.root._children[0], self.tree2) # Make sure it works if nothing is moved new_position = 0 self.root.moveChildToPosition(self.tree2, new_position) self.assertEqual(self.root._children[0], self.tree2) # Move an end tree new_position = 0 self.root.moveChildToPosition(tree5, new_position) self.assertEqual(self.root._children[0], tree5) def testMoveChildToOtherchild(self): """ Existing tree NAME1 NAME3 NAME2 NAME4 New tree NAME1 NAME4 NAME3 NAME2 """ if IGNORE_TEST: return self.root.moveChildToOtherchild(self.tree4, self.tree3) self.assertEqual(self.root.getChildAtPosition(0), self.tree4) def testMoveChildToOtherchild2(self): """ Existing tree NAME1 NAME3 NAME2 NAME4 New tree NAME1 NAME2 NAME4 NAME3 """ if IGNORE_TEST: return self.root.moveChildToOtherchild(self.tree3, self.tree2) self.assertEqual(self.root.getChildAtPosition(0), self.tree2) def testIsRoot(self): if IGNORE_TEST: return self.assertTrue(self.root.isRoot()) new_tree = Tree("DUMMY_TREE") self.root.addChild(new_tree) self.assertFalse(new_tree.isRoot()) self.assertTrue(self.root.isRoot()) def testValidateTree(self): if IGNORE_TEST: return self.tree2 = self._AddChild(NEW_NAME) with self.assertRaises(RuntimeError): self.tree2 = self._AddChild(NEW_NAME) def testIter(self): if IGNORE_TEST: return self.assertTrue(isinstance(iter(self.root), TreeIterator)) iterator = iter(self.root) self.assertTrue(isinstance(next(iterator), Tree)) def testCreateRandomTree(self): if IGNORE_TEST: return num_nodes = 5 tree = Tree.createRandomTree(num_nodes, 0.1) self.assertEqual(len(tree.getAllNodes()), num_nodes) self.assertEqual(len(tree.getChildren()), num_nodes - 1) tree = Tree.createRandomTree(1, 0.1) self.assertEqual(len(tree.getAllNodes()), 1) tree = Tree.createRandomTree(2, 0.1) self.assertEqual(len(tree.getAllNodes()), 2) tree = Tree.createRandomTree(num_nodes, 0.99) self.assertEqual(len(tree.getAllNodes()), num_nodes) num_nodes = 500 tree = Tree.createRandomTree(num_nodes, 0.1) tree.validateTree() def testFindLeavesInNodes(self): num_nodes = 50 tree1 = Tree.createRandomTree(num_nodes, 0.2) tree2 = Tree.createRandomTree(num_nodes, 0.2) expected = tree1.getLeaves() expected.extend(tree2.getLeaves()) expected = set(expected) nodes = tree1.getAllNodes() nodes.extend(tree2.getAllNodes()) actual = set(Tree.findLeavesInNodes(nodes)) self.assertEqual(expected.difference(actual), actual.difference(expected)) def testFindRootsInNodes(self): num_nodes = 5 tree1 = Tree.createRandomTree(num_nodes, 0.2) tree2 = Tree.createRandomTree(num_nodes, 0.2) nodes = tree1.getAllNodes() nodes.extend(tree2.getAllNodes()) roots = Tree.findRootsInNodes(nodes) self.assertEqual(len(roots), 2) for tree in [tree1, tree2]: self.assertTrue(tree in roots) tree1.addChild(tree2) roots = Tree.findRootsInNodes(nodes) self.assertEqual(roots, [tree1]) nodes.remove(tree1) roots = Tree.findRootsInNodes(nodes) expected = tree1.getChildren() self.assertEqual(roots, expected)
class TestPositionTree(unittest.TestCase): def setUp(self): self.root = PositionTree(NAME) self._createComplexTree() def _AddChild(self, name, position=None): new_tree = PositionTree(name) self.root.addChild(new_tree, position=position) return new_tree def _createComplexTree(self): """ Creates the following tree 0: NAME1->NAME3 1: NAME1->NAME2->NAME4 """ self.tree2 = self._AddChild(NAME2, position=1) self.tree3 = self._AddChild(NAME3, position=0) self.tree4 = Tree(NAME4) self.tree2.addChild(self.tree4) def testAddChild(self): if IGNORE_TEST: return self.assertEqual(self.root._children[0], self.tree3) self.assertEqual(self.root._children[1], self.tree2) def testGetChildAtPosition(self): if IGNORE_TEST: return tree3 = self.root.getChildAtPosition(0) self.assertEqual(tree3, self.tree3) tree2 = self.root.getChildAtPosition(1) self.assertEqual(tree2, self.tree2) with self.assertRaises(ValueError): _ = self.root.getChildAtPosition(2) def testGetPosition(self): if IGNORE_TEST: return expected_position = self.root.getPositionOfChild(self.tree2) self.assertEqual(expected_position, self.tree2.getPosition()) self.assertIsNone(self.root.getPosition()) def testGetPositionOfChild(self): if IGNORE_TEST: return position = self.root.getPositionOfChild(self.tree2) self.assertEqual(position, 1) self.assertIsNone(self.root.getPositionOfChild(self.tree4)) def testMoveChildToPosition(self): if IGNORE_TEST: return tree5 = PositionTree(NAME5) self.root.addChild(tree5) new_position = 0 self.root.moveChildToPosition(self.tree2, new_position) self.assertEqual(self.root._children[0], self.tree2) # Make sure it works if nothing is moved new_position = 0 self.root.moveChildToPosition(self.tree2, new_position) self.assertEqual(self.root._children[0], self.tree2) # Move an end tree new_position = 0 self.root.moveChildToPosition(tree5, new_position) self.assertEqual(self.root._children[0], tree5) def testToString(self): if IGNORE_TEST: return tree5 = PositionTree(NAME5) self.root.addChild(tree5) result = self.root.toString() self.assertTrue("2: ->NAME5" in result) self.assertEqual(result.count('->'), 4) def testIsRoot(self): if IGNORE_TEST: return self.assertTrue(self.root.isRoot()) new_tree = Tree("DUMMY_TREE") self.root.addChild(new_tree) self.assertFalse(new_tree.isRoot()) self.assertTrue(self.root.isRoot()) # TODO: Delete since this is testing Table? def testIsEquivalent(self): if IGNORE_TEST: return [table, other_table] = getCapture("test_table_1") result = super(NamedTree, table).isEquivalent(other_table) self.assertTrue(result) def testValidateTree(self): self.tree2 = self._AddChild(NEW_NAME) with self.assertRaises(RuntimeError): self.tree2 = self._AddChild(NEW_NAME)