public void CanReadMethods()
 {
     var condition = new ExpressionCondition("Person.IsMinor", "is true");
     var action = new AssignAction("Person.Salutation", "To the parents of");
     var rule = CreateTestRule(condition, action);
     _ruleSet.AddRule(rule);
     var engine = WFRuleEngine.Compile(_ruleSet);
     var person = new TestPerson { BirthDate = DateTime.Today };
     _workingMemory.Add("Person", person);
     engine.Invoke(_workingMemory);
     Assert.AreEqual("To the parents of", person.Salutation);
 }
Esempio n. 2
0
        public void RuleSetIsValidIfRulesAreValid()
        {
            var rule = new Rule { Name = "First Rule", TopCondition = new LogicCondition { Operator = "all" } };
            var action1 = new AssignAction { LeftHandSide = "Person.Salutation", Value = "Mr." };
            var action2 = new AssignAction { LeftHandSide = "Person.Greeting", Value = "Hello" };
            rule.AddAction(action1);
            rule.AddAction(action2);

            var rs = new RuleSet { Name = "Whatever" };
            rs.AddInput("Person", typeof(TestPerson));
            rs.AddRule(rule);

            Assert.IsTrue(rs.IsValid());
        }
        public void CanReadAndWriteProperties()
        {
            var condition = new ExpressionCondition("Person.Sex", "is", "Male");
            var action = new AssignAction("Person.Salutation", "Mr.");
            Rule rule = CreateTestRule(condition, action);
            _ruleSet.AddRule(rule);

            var person = new TestPerson { Sex = "Male" };

            var engine = WFRuleEngine.Compile(_ruleSet);
            _workingMemory.Add("Person", person);
            engine.Invoke(_workingMemory);

            Assert.AreEqual("Mr.", person.Salutation);
        }
        public void InvokingWithIncorrectWorkingMemoryThrowsAnException()
        {
            var rule = new Rule { Name = "First Rule", TopCondition = new LogicCondition { Operator = "all" } };
            var action1 = new AssignAction { LeftHandSide = "Person.Salutation", Value = "Mr." };
            rule.AddAction(action1);

            var rs = new RuleSet { Name = "Whatever" };
            rs.AddInput("Person", typeof(TestPerson));
            rs.AddRule(rule);

            IRuleEngine engine = WFRuleEngine.Compile(rs);

            Assert.Throws(typeof(InvalidWorkflowException), delegate
            {
                engine.Invoke(_workingMemory);
            });
        }
 private Rule CreateTestRule(ExpressionCondition condition, AssignAction action)
 {
     var rule = new Rule { Name = "Rule 1", TopCondition = new LogicCondition { Operator = "all" } };
     rule.TopCondition.AddCondition(condition);
     rule.AddAction(action);
     return rule;
 }
Esempio n. 6
0
 public void AddAction(AssignAction action)
 {
     Actions.Add(action);
 }