Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        public void ExecuteTest2()
        {
            var functions = new FunctionCollection();

            var func = new UserFunction("f", new IExpression[] { new Number(1) }, 1);

            Assert.Throws<KeyNotFoundException>(() => func.Execute(functions));
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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));
        }