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_node_remove_parent(self): par = Parameter(3, name='par') parent_1 = Parameter(1, name='parent_1') parent_2 = Parameter(2, name='parent_2') parent_1.add_child(par) parent_2.add_child(par) with self.assertRaises(NodeException): par.remove_parent(parent_1) self.assertEqual(par.get_parents(), [parent_1, parent_2]) parent_1.remove_child(par) self.assertEqual(par.get_parents(), [parent_2]) with self.assertRaises(TypeError): par.remove_parent("notanode")
def test_node_set_parents(self): par = Parameter(3, name='par') parent_1 = Parameter(1, name='parent_1') parent_2 = Parameter(2, name='parent_2') par.set_parents([parent_1, parent_2]) self.assertEqual(par.get_parents(), [parent_1, parent_2])
def test_node_add_parent(self): par = Parameter(3, name='par') par_2 = Parameter(2, name='par_2') with self.assertRaises(TypeError): par.add_parent("notanode") # Manually adding parents is not allowed: with self.assertRaises(NodeException): par.add_parent(par_2) par_2.add_child(par) self.assertEqual(par.get_parents(), [par_2])