예제 #1
0
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()
예제 #2
0
    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])
예제 #3
0
    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()
예제 #4
0
    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")