def test_parameter_replace(self): par = Parameter(3, name='par') selector = Function( lambda *args: args[1], name='selector', parameters=( Parameter('bla', name='first'), par, Parameter('blup', name='third'), ), ) context = Parameter(2, name='pre_factor') * selector # store parents and children for comparison _children_before = par.get_children() _parents_before = par.get_parents() # replace node par_new = Parameter(7, name='par_new') par.replace(par_new) par_new.value = 6 self.assertEqual(context.value, 12) # retrieve new parents and children for comparison _children_after = par_new.get_children() _parents_after = par_new.get_parents() self.assertEqual(_children_before, _children_after) self.assertEqual(_parents_before, _parents_after)
def test_replace_child(self): par_a = Parameter(4) par_b = Parameter(5) par_c = Parameter(6) par_a.add_child(par_b) self.assertEqual(par_a.get_children(), [par_b]) with self.assertRaises(NodeException): par_a.replace_child(current_child=par_c, new_child=par_b) par_a.replace_child(current_child=par_b, new_child=par_c) with self.assertRaises(NodeException): par_a.replace_child(current_child=par_b, new_child=par_c) self.assertEqual(par_a.get_children(), [par_c]) par_a.replace_child(current_child=par_c, new_child=7) self.assertNotEqual(par_a.get_children(), [par_b]) self.assertNotEqual(par_a.get_children(), [par_c]) self.assertIs(type(par_a.get_children()[0]), Parameter)
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_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")