def test_fallback(self): par_a = Parameter(14) par_b = Parameter(2) div_a_b = Fallback((par_a / par_b, 'DIV0'), exception_type=ZeroDivisionError) # no exception yet self.assertEqual( div_a_b.value, par_a.value / par_b.value, ) # make denominator zero par_b.value = 0 # exception matches type -> fallback self.assertEqual( div_a_b.value, 'DIV0', ) # exception does not match type -> raise with self.assertRaises(ZeroDivisionError): Fallback((par_a / par_b, 'DIV0'), exception_type=TypeError).value
def test_function_value_update_frozen(self): par_a = Parameter(3) par_b = Parameter(7) def func(a, b): return a * 10 + b func_a_b = Function(func, parameters=(par_a, par_b)) self.assertEqual( func_a_b.value, func(par_a.value, par_b.value), ) # test value update func_a_b.freeze() par_a.value = -3 self.assertEqual( func_a_b.value, func(3, 7), ) func_a_b.unfreeze() self.assertEqual( func_a_b.value, func(par_a.value, par_b.value), )
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_function_value(self): par_a = Parameter(3) par_b = Parameter(7) def func(a, b): return a * 10 + b func_a_b = Function(func, parameters=(par_a, par_b)) self.assertEqual( func_a_b.value, func(par_a.value, par_b.value), ) # test value update par_a.value = -3 self.assertEqual( func_a_b.value, func(par_a.value, par_b.value), )
def test_parameter_set_value(self): par = Parameter(3) par.value = 7 self.assertEqual(par.value, 7)