Exemplo n.º 1
0
        public void MultipleExpressionsWithNullResult()
        {
            var eval = new FormulaEvaluator();

            eval.AddVariable("a", null);
            eval.AddVariable("b", 1);
            eval.Evaluate("{{a}}{{b}}").Should().Be(1);
            eval.Evaluate("{{b}}{{a}}").Should().Be("1");
        }
Exemplo n.º 2
0
        public void FormulaEvaluatorTests1()
        {
            var eval = new FormulaEvaluator();

            eval.AddVariable("a", 2);
            eval.AddVariable("b", 3);
            eval.Evaluate("{{\"test\"}}").Should().Be("test");
            eval.Evaluate("{{a+b}}").Should().Be(5);
            eval.Evaluate("{{c}}+{{d}}={{c+d}}", new Parameter("c", 3), new Parameter("d", 6)).Should().Be("3+6=9");
            eval.Evaluate("{{c}}+{{d}}={{c+d}}", new Parameter("c", 7), new Parameter("d", 8)).Should().Be("7+8=15");
        }
Exemplo n.º 3
0
        public void EvalExpressionVariableWithAt()
        {
            var eval = new FormulaEvaluator();

            eval.AddVariable("@a", 1);
            eval.Evaluate("{{@a+@a}}").Should().Be(2);
        }
Exemplo n.º 4
0
        public void UsingDynamicLinqTypeTest()
        {
            var eval = new FormulaEvaluator();

            eval.AddVariable("a", "1");
            eval.Evaluate("{{EvaluateUtils.ParseAsInt(a).IncrementMe()}}").Should().Be(2);
        }
Exemplo n.º 5
0
        public GlobalTestSetup()
        {
            //Warm-up DynamicExpressionParser
            var evaluator = new FormulaEvaluator();

            evaluator.AddVariable("item", "warm-up");
            evaluator.Evaluate("&={{item.Length}}");
        }
Exemplo n.º 6
0
        public void ExpressionParseTestNullPropagation()
        {
            var customers = new Customer[]
            {
                new Customer {
                    Id = 1, Name = "Customer1", Manager = new Customer {
                        Id = 3, Name = "Manager1"
                    }
                },
                new Customer {
                    Id = 2, Name = "Customer2", Manager = null
                }
            };
            var eval = new FormulaEvaluator();

            eval.AddVariable("a", customers[0]);
            eval.AddVariable("b", customers[1]);
            eval.Evaluate(@"{{np(a.Manager.Name, ""test"")}}").Should().Be("Manager1");
            eval.Evaluate(@"{{np(b.Manager.Name, ""test"")}}").Should().Be("test");
            eval.Evaluate(@"{{np(b.Manager.Name, null)}}").Should().BeNull();
        }
Exemplo n.º 7
0
        public void UsingLambdaExpressionsIssue212()
        {
            var customers = new object[10000];

            for (int i = 0; i < customers.Length; i++)
            {
                customers[i] = new Customer {
                    Id = i, Name = "Customer" + i
                };
            }

            var eval = new FormulaEvaluator();

            eval.AddVariable("items", customers);
            eval.Evaluate("{{items.Count(c => c.Id == 9999)}}").Should().Be(1);
            eval.Evaluate("{{items.Select(i => i.Name).Skip(1000).First()}}").Should().Be("Customer1000");
        }
Exemplo n.º 8
0
        public void EvalMixedArray()
        {
            var mixed = new object[] {
                "string",
                1,
                0.1,
                System.DateTime.Today,
            };

            var eval = new FormulaEvaluator();

            eval.AddVariable("mixed", mixed);
            eval.Evaluate("{{mixed.Count()}}").Should().Be(4);
            foreach (var item in mixed)
            {
                eval.Evaluate("{{item}}", new Parameter("item", item));
            }
        }