public ExternalFunctionTests() { var funcs = new DefaultFunctions <Maybe <object> >(); funcs.Register("GetValue", (args, context) => { var maybe = context.Value; if (maybe.HasValue && maybe.Value is TestObj o) { return(o.MemberFunction()); } return("Fail"); }); parser = new ExpressionParser <Maybe <object> >( new MaybeExpressionFactory( MaybeMonad.Instance, funcs)); }
public void EvalLegacyMathFunction(string exprString, object expected) { var funcs = new DefaultFunctions <object>(); funcs.Register("GetValue", (a, b) => Convert.ToDouble(a[1])); var parseResult = VCExpression.ParseDefault(exprString, funcs); var expr = parseResult.Expression; var result = expr.Evaluate(new { }); Assert.That(result, Is.EqualTo(expected)); var funcs2 = new DefaultCSharpFunctions(); funcs2.Register("GetValue", (a, b) => $"Convert.ToDouble({a[1]})"); var parseResult2 = CSharpExpression.ParseMethod(exprString, funcs2); var expr2 = parseResult2.Expression; var result2 = expr2.Evaluate(new { }); Assert.That(result2, Is.EqualTo(expected)); }