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"); }
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"); }
public void EvalExpressionVariableWithAt() { var eval = new FormulaEvaluator(); eval.AddVariable("@a", 1); eval.Evaluate("{{@a+@a}}").Should().Be(2); }
public void UsingDynamicLinqTypeTest() { var eval = new FormulaEvaluator(); eval.AddVariable("a", "1"); eval.Evaluate("{{EvaluateUtils.ParseAsInt(a).IncrementMe()}}").Should().Be(2); }
public GlobalTestSetup() { //Warm-up DynamicExpressionParser var evaluator = new FormulaEvaluator(); evaluator.AddVariable("item", "warm-up"); evaluator.Evaluate("&={{item.Length}}"); }
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(); }
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"); }
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)); } }