Exemple #1
0
        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)
            );
        }
Exemple #2
0
        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));
        }
Exemple #5
0
        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)
            );
        }
Exemple #6
0
        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 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();
 }
Exemple #9
0
        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)
                );
        }
Exemple #10
0
        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);
            }
        }
Exemple #11
0
        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)
                );
        }
Exemple #12
0
        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));
        }