public void SameTypes() { var dynamicExpression = new DynamicExpression("Variable", ExpressionLanguage.Csharp); var context = new ExpressionContext(); context.Variables.Add(new Variable("Variable") { Value = 1 }); Assert.AreSame( dynamicExpression.Bind(context), dynamicExpression.Bind(context) ); }
public void SameTypes() { var dynamicExpression = new DynamicExpression("Variable", ExpressionLanguage.Flee); var context = new ExpressionContext(); context.Variables.Add(new Variable("Variable") { Value = 1 }); Assert.AreSame( dynamicExpression.Bind(context), dynamicExpression.Bind(context) ); }
public void TestExpressionVariables() { ExpressionContext context1 = new ExpressionContext(); context1.Imports.Add(new Import(typeof(Math))); var exp1 = new DynamicExpression("sin(pi)", ExpressionLanguage.Flee); var boundExp1 = exp1.Bind(context1); ExpressionContext context2 = new ExpressionContext(); context2.Imports.Add(new Import(typeof(Math))); var exp2 = new DynamicExpression<double>("cos(pi/2)", ExpressionLanguage.Flee); var boundExp2 = exp2.Bind(context2); ExpressionContext context3 = new ExpressionContext(); context3.Variables.Add("a", boundExp1); context3.Variables.Add("b", boundExp2); var exp3 = new DynamicExpression("cast(a, double) + b", ExpressionLanguage.Flee); double a = Math.Sin(Math.PI); double b = Math.Cos(Math.PI / 2); Assert.AreEqual(a + b, exp3.Invoke(context3)); ExpressionContext context4 = new ExpressionContext(); context4.Variables.Add("a", boundExp1); context4.Variables.Add("b", boundExp2); var exp4 = new DynamicExpression<double>("(cast(a, double) * b) + (b - cast(a, double))", ExpressionLanguage.Flee); Assert.AreEqual((a * b) + (b - a), exp4.Invoke(context4)); }
public void TestExpressionVariables() { ExpressionContext context1 = new ExpressionContext(); context1.Imports.Add(new Import(typeof(Math))); var exp1 = new DynamicExpression("sin(pi)", ExpressionLanguage.Flee); var boundExp1 = exp1.Bind(context1); ExpressionContext context2 = new ExpressionContext(); context2.Imports.Add(new Import(typeof(Math))); var exp2 = new DynamicExpression <double>("cos(pi/2)", ExpressionLanguage.Flee); var boundExp2 = exp2.Bind(context2); ExpressionContext context3 = new ExpressionContext(); context3.Variables.Add("a", boundExp1); context3.Variables.Add("b", boundExp2); var exp3 = new DynamicExpression("cast(a, double) + b", ExpressionLanguage.Flee); double a = Math.Sin(Math.PI); double b = Math.Cos(Math.PI / 2); Assert.AreEqual(a + b, exp3.Invoke(context3)); ExpressionContext context4 = new ExpressionContext(); context4.Variables.Add("a", boundExp1); context4.Variables.Add("b", boundExp2); var exp4 = new DynamicExpression <double>("(cast(a, double) * b) + (b - cast(a, double))", ExpressionLanguage.Flee); Assert.AreEqual((a * b) + (b - a), exp4.Invoke(context4)); }
public void UnusedDifferentTypesAreSame() { var dynamicExpression = new DynamicExpression("1", ExpressionLanguage.Csharp); var context1 = new ExpressionContext(); context1.Variables.Add(new Variable("Variable") { Value = 1 }); var context2 = new ExpressionContext(); context2.Variables.Add(new Variable("Variable") { Value = 1d }); Assert.AreSame( dynamicExpression.Bind(context1), dynamicExpression.Bind(context2) ); }
public void DifferentTypesDifferentCache() { var dynamicExpression = new DynamicExpression("Variable", ExpressionLanguage.Flee); var context1 = new ExpressionContext(); context1.Variables.Add(new Variable("Variable") { Value = 1 }); var context2 = new ExpressionContext(); context2.Variables.Add(new Variable("Variable") { Value = 1d }); Assert.AreNotSame( dynamicExpression.Bind(context1), dynamicExpression.Bind(context2) ); }
public void Test() { string translatedString = "uppercase(\"hello\")"; var expr = new DynamicExpression(translatedString, ExpressionLanguage.Csharp); var context = new ExpressionContext(null, new CustomOwner(), true); var boundExpression = expr.Bind(context); object res = boundExpression.Invoke(); }
public void UnusedDifferentTypesAreSame() { var dynamicExpression = new DynamicExpression("1", ExpressionLanguage.Flee); var context1 = new ExpressionContext(); context1.Variables.Add(new Variable("Variable") { Value = 1 }); var context2 = new ExpressionContext(); context2.Variables.Add(new Variable("Variable") { Value = 1d }); Assert.AreSame( dynamicExpression.Bind(context1), dynamicExpression.Bind(context2) ); }
protected void AssertCompileException(string expression, ExpressionContext context, BoundExpressionOptions options, ExpressionsExceptionType exceptionType) { try { var dynamicExpressions = new DynamicExpression(expression, Language); dynamicExpressions.Bind(context, options); Assert.True(false, "Compile exception expected"); } catch (ExpressionsException ex) { Assert.Equal(exceptionType, ex.Type); } }
public void DifferentTypesDifferentCache() { var dynamicExpression = new DynamicExpression("Variable", ExpressionLanguage.Csharp); var context1 = new ExpressionContext(); context1.Variables.Add(new Variable("Variable") { Value = 1 }); var context2 = new ExpressionContext(); context2.Variables.Add(new Variable("Variable") { Value = 1d }); Assert.AreNotSame( dynamicExpression.Bind(context1), dynamicExpression.Bind(context2) ); }
public virtual bool Evaluate(Dictionary <string, object> fields) { ExpressionContext context = new ExpressionContext(); var expression = new DynamicExpression(Expression, ExpressionLanguage.Csharp); if (fields != null) { foreach (var field in fields) { context.Variables.Add(field.Key, field.Value); } } var boundExpression = expression.Bind(context); return((bool)boundExpression.Invoke(context)); }