public void ExecuteTest1() { var functions = new FunctionCollection(); functions.Add(new UserFunction("f", new IExpression[] { new Variable("x") }, 1), new Ln(new Variable("x"))); var func = new UserFunction("f", new IExpression[] { new Number(1) }, 1); Assert.Equal(Math.Log(1), func.Execute(functions)); }
public void ExecuteTest2() { var functions = new FunctionCollection(); var func = new UserFunction("f", new IExpression[] { new Number(1) }, 1); Assert.Throws<KeyNotFoundException>(() => func.Execute(functions)); }
public void ExecuteTest3() { var uf1 = new UserFunction("func", new[] { new Variable("x") }, 1); var func = new DelegateExpression(p => (double)p.Variables["x"] == 10 ? 0 : 1); var funcs = new FunctionCollection(); funcs.Add(uf1, func); var uf2 = new UserFunction("func", new[] { new Number(12) }, 1); var result = uf2.Execute(new ExpressionParameters(funcs)); Assert.Equal(1, result); }
public void ExecuteRecursiveTest() { var expParams = new ExpressionParameters(); var exp = new If(new Equal(new Variable("x"), new Number(0)), new Number(1), new Mul(new Variable("x"), new UserFunction("f", new[] { new Sub(new Variable("x"), new Number(1)) }, 1))); expParams.Functions.Add(new UserFunction("f", new[] { new Variable("x") }, 1), exp); var func = new UserFunction("f", new[] { new Number(4) }, 1); Assert.Equal(24.0, func.Execute(expParams)); }