def test_parameter_arithmetic(self, p, q): """Test parameter arithmetic works as expected,""" pp = FreeParameter("x") qq = FreeParameter("y") pp.val = p qq.val = q binary_arithmetic(pp, qq, p, q)
def test_par_evaluate_dtype_TF(self, p, dtype): """Test the TF parameter evaluation works when a dtype is provided""" pytest.importorskip("tensorflow", minversion="2.0") import tensorflow as tf x = FreeParameter("x") x.val = tf.Variable(p) res = par_evaluate(x, dtype=dtype) assert res.dtype is tf.as_dtype(dtype)
def test_par_evaluate(self, p): x = FreeParameter("x") with pytest.raises(ParameterError, match="unbound parameter with no default value"): par_evaluate(x) # val only x.val = p assert np.all(par_evaluate(x) == p) # default only x.val = None x.default = p assert np.all(par_evaluate(x) == p) # both val and default x.val = p x.default = 0.0 assert np.all(par_evaluate(x) == p)
def test_parameter_unary_negation(self, p): """Test unary negation works as expected.""" pp = FreeParameter("x") pp.val = p assert par_evaluate(-p) == pytest.approx(-p) assert par_evaluate(-pp) == pytest.approx(-p)
def test_parameter_right_literal_arithmetic(self, p, q): """Test parameter arithmetic works as expected.""" pp = FreeParameter("x") pp.val = p binary_arithmetic(pp, q, p, q)
def test_parameter_left_literal_arithmetic(self, p, q): """Test parameter arithmetic works as expected.""" qq = FreeParameter("x") qq.val = q binary_arithmetic(p, qq, p, q)
def test_par_evaluate_dtype_numpy(self, p, dtype): """Test the numpy parameter evaluation works when a dtype is provided""" x = FreeParameter("x") x.val = p res = par_evaluate(x, dtype=dtype) assert res.dtype.type is dtype