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)