public void ParseExpressionAcceptsDefaultParameterDictionary() { var parameters = new Dictionary <string, double> { { "Dummy", 123 }, { "Yummy", 456 } }; var compiledFunction = Сalc.ParseExpression("Dummy+Yummy", parameters).Compile(); Assert.Equal(579d, compiledFunction()); }
public void ParseFunctionProducesExpressionWithParameters() { var compiledFunction = Сalc.ParseFunction("Dummy+Yummy").Compile(); var parameters = new Dictionary <string, double> { { "Dummy", 2 }, { "Yummy", 3 } }; Assert.Equal(5d, compiledFunction(parameters)); }
public void OverriddenParseExpressionMethodStillWorks() { Assert.Equal(0d, Сalc.ParseExpression("0").Compile()()); Assert.Equal(System.Math.E, Сalc.ParseExpression("E").Compile()()); }
public void ParseExpressionAcceptsDefaultParameterAnonymousClass() { var compiledFunction = Сalc.ParseExpression("Dummy+Yummy", new { Dummy = 123, Yummy = 456 }).Compile(); Assert.Equal(579d, compiledFunction()); }
public void ParseExpressionAcceptsDefaultParameterExpressions() { var compiledFunction = Сalc.ParseExpression("Dummy+Yummy", Dummy => 123, Yummy => 456).Compile(); Assert.Equal(579d, compiledFunction()); }
public void GetParameterExpressionSupportsSystemMathConstantsAndCustomVariables() { Assert.Equal(System.Math.PI, Сalc.GetParameterExpression("PI").Execute()); Assert.Equal(System.Math.E, Сalc.GetParameterExpression("E").Execute()); Assert.Equal("Parameters.get_Item(\"Dummy\")", Сalc.GetParameterExpression("Dummy").ToString()); }
public void CallFunctionSupportsRegisteredFunctionsAsWellAsSystemMathFunctions() { Assert.Equal(2d, Сalc.CallFunction("Min", Expression.Constant(2d), Expression.Constant(3d)).Execute()); // System.Math.Min Assert.Equal(1d, Сalc.CallFunction("Min", Expression.Constant(2d), Expression.Constant(3d), Expression.Constant(1d)).Execute()); // custom Min Assert.Throws <ParseException>(() => Сalc.CallFunction("Mul", Expression.Constant(0d))); }
public void MangleNameProducesMangledFunctionName() { Assert.Equal(":0", Сalc.MangleName(null, 0)); Assert.Equal("MySine:2", Сalc.MangleName("MySine", 2)); }