public void Can_Evaluate_Dsl_Expression() { var rule = "return (this.Price > 20 or this.Price < 15)"; var order = new Order { Price = 10, Message = "Soemthing" }; var result = evaluator.Evaluate(rule, order); Assert.IsTrue(result); }
public void Can_Evaluate_Ruby_Expression_Again() { var rule = "this.Price > 20 and this.Price < 15"; var order = new Order { Price = 10, Message = "Soemthing" }; var result = evaluator.Evaluate(rule, order); Assert.IsFalse(result); }
public void Can_Evaluate_Expression_As_ConditionalRule() { var statement = "return (this.Price > 20 or this.Price < 15)"; var order = new Order { Price = 10, Message = "Soemthing" }; EvaluatorAccessPoint.DslConditionEvaluator = evaluator; var condition = new DslCondition { DslStatement = statement }; var rule = new ConditionalRule(condition); Assert.IsTrue(rule.Evaluate(order)); }
public void Can_Evaluate_Expression_With_FuncCondition() { var order = new Order { Price = 10, Message = "Something" }; var condition = new FuncCondition<Order>(o => o.Price < 20); var rule = new ActivityRule(condition, new ActionActivity<Order>(t => { t.Message = "amp"; })); Assert.IsTrue(rule.Evaluate(order)); Assert.AreEqual("amp", order.Message); }
public void Can_Evaluate_Expression_As_ActionActivityRule() { var statement = "return (this.Price > 20 or this.Price < 15)"; var order = new Order { Price = 10, Message = "Soemthing" }; EvaluatorAccessPoint.DslConditionEvaluator = evaluator; var condition = new DslCondition { DslStatement = statement }; var rule = new ActivityRule(condition, new ActionActivity<Order>(t => { t.Message = "amp"; })); Assert.IsTrue(rule.Evaluate(order)); Assert.AreEqual("amp", order.Message); }
public void Can_Evaluate_Expression_With_DslActivity() { var statement = "return (this.Price > 20 or this.Price < 15)"; var order = new Order { Price = 10, Message = "Something" }; EvaluatorAccessPoint.DslConditionEvaluator = evaluator; var condition = new DslCondition { DslStatement = statement }; var rule = new ActivityRule(condition, new DslActivity { DslStatement = @" this.Message = ""dsl""; return true;" }); Assert.IsTrue(rule.Evaluate(order)); Assert.AreEqual("dsl", order.Message); }
public void Can_Setup_Flow_With_Dsl_Conditions() { var statement = "return (this.Price > 15 and this.Price < 20)"; EvaluatorAccessPoint.DslConditionEvaluator = evaluator; var flow = Flow.For<Order>() .Decide(new DslCondition(statement)) .WhenTrue(a => a.Do(o => o.Message = "true")) .WhenFalse(a => a.Do(o => o.Message = "false")); var order = new Order { Price = 16 }; flow.Execute(order); Assert.AreEqual("true", order.Message); order.Price = 21; flow.Execute(order); Assert.AreEqual("false", order.Message); }
public void Can_Setup_Flow_With_Dsl_Conditions_And_DslActiviy() { var condition = "return (this.Price > 15 and this.Price < 20)"; var activity = @"this.Message = ""true""; return true; "; EvaluatorAccessPoint.DslConditionEvaluator = evaluator; var flow = Flow.For<Order>() .Decide(new DslCondition(condition)) .WhenTrue(a => a.Do(new DslActivity(activity))) .WhenFalse(a => a.Do(o => o.Message = "false")); var order = new Order { Price = 16 }; flow.Execute(order); Assert.AreEqual("true", order.Message); order.Price = 21; flow.Execute(order); Assert.AreEqual("false", order.Message); }
public void Can_Setup_Flow() { var flow = Flow.For<Order>() .Do(a => a.Price = 10) .Then .Decide(o => o.Price > 10) .WhenTrue(a => a.Do(t => t.Price = 10) .Then .Decide(aa => aa.Price > 15) .WhenTrue(b => b.Do(t => t.Price = 20)) .WhenFalse(b => b.Do(t => t.Price = 30)) ) .WhenFalse(a1 => a1.Do(t => t.Price = 30) .Then.Do(t => t.Price = 40).Then.Do(t => t.Price = 50).Then .Decide(aa => aa.Price > 40).WhenFalse(a => a.Do(a2 => a2.Message ="test"))); var order = new Order {Price = 15}; flow.Execute(order); Console.WriteLine(order.Price); Console.WriteLine(order.Message); }