class TestNodeVisitors(unittest.TestCase): def setUp(self): self.root = RootNode() self.empty = Empty(name="empty") self.par_a = Parameter(2, name="par_a") self.par_b = Parameter(3, name="par_b") self.par_c = Parameter(4, name="par_c") self.func_1 = self.par_a + self.par_b self.func_2 = self.par_a * self.par_c self.func_3 = Function(lambda a, b: a + b) self.alias = Alias(self.par_a, name="alias") self.par_a.set_children([self.par_b]) self.root.set_children( [self.empty, self.func_1, self.func_2, self.func_3, self.alias]) # -- NodeChildrenPrinter def test_node_children_printer(self): self.root.print_descendants() # -- NodeCycleChecker def test_node_cycle_checker(self): NodeCycleChecker(self.par_a).run() self.par_b.set_children([self.par_a]) with self.assertRaises(ValueError): NodeCycleChecker(self.par_a).run()
def test_node_set_children(self): par = Parameter(3, name='par') child_1 = Parameter(1, name='child_1') child_2 = Parameter(2, name='child_2') par.set_children([child_1, child_2]) self.assertEqual(par.get_children(), [child_1, child_2])
def test_node_cycle_checker(self): par_a = Parameter(1) par_b = Parameter(2) par_a.set_children([par_b]) NodeCycleChecker(par_a).run() par_b.set_children([par_a]) with self.assertRaises(ValueError): NodeCycleChecker(par_a).run()
def test_node_remove_child(self): par = Parameter(3, name='par') child_1 = Parameter(1, name='child_1') child_2 = Parameter(2, name='child_2') par.set_children([child_1, child_2]) par.remove_child(child_1) self.assertEqual(par.get_children(), [child_2]) with self.assertRaises(TypeError): par.remove_child("notanode")