public void CanAddNestedLogicConditions() { LogicCondition lc1 = new LogicCondition { Operator = "any" }; LogicCondition lc2 = new LogicCondition { Operator = "all" }; var ec = new ExpressionCondition { LeftHandSide="Person.Age", Operator="is", RightHandSide=new List<string> { "18" } }; lc1.AddCondition(ec); lc1.AddCondition(lc2); Assert.IsTrue(lc1.IsValid(_context)); }
public void IsInvalidIfAnyChildIsInvalid() { LogicCondition lc = new LogicCondition { Operator = "all" }; var ec1 = new ExpressionCondition { LeftHandSide = "Person.Age", Operator = "is", RightHandSide = new List<string> { "18" } }; var ec2 = new ExpressionCondition { LeftHandSide = "Whatever", Operator = "is", RightHandSide = new List<string> { "18" } }; lc.AddCondition(ec1); lc.AddCondition(ec2); Assert.IsFalse(lc.IsValid(_context)); }
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); }
public void IsInvalidIfDeeplyNestedChildIsInvalid() { LogicCondition lc1 = new LogicCondition { Operator = "all" }; LogicCondition lc2 = new LogicCondition { Operator = "any" }; LogicCondition lc3 = new LogicCondition { Operator = "any" }; var ok = new ExpressionCondition { LeftHandSide = "Person.Age", Operator = "is", RightHandSide = new List<string> { "18" } }; var bad = new ExpressionCondition { LeftHandSide = "Whatever", Operator = "is", RightHandSide = new List<string> { "18" } }; lc1.AddCondition(ok); lc1.AddCondition(lc2); lc2.AddCondition(ok); lc1.AddCondition(lc3); lc3.AddCondition(bad); Assert.IsFalse(lc1.IsValid(_context)); }
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 ConditionWithInvalidTargetIsInvalid() { var condition = new ExpressionCondition("Patient.Sex", "is", "Male"); Assert.IsFalse(condition.IsValid(_context)); }
public void ConditionWithInvalidTargetMemberIsInvalid() { var condition = new ExpressionCondition("Person.Gender", "is", "Male"); Assert.IsFalse(condition.IsValid(_context)); }
public void BooleanIsTrueConditionIsValid() { var condition = new ExpressionCondition("Person.IsMinor", "is true"); Assert.IsTrue(condition.IsValid(_context)); }
public void BooleanWhateverConditionIsInvalid() { var condition = new ExpressionCondition("Person.IsMinor", "whatever"); Assert.IsFalse(condition.IsValid(_context)); }
public void NumberRangeConditionWithOneRHSElementIsInvalid() { var condition = new ExpressionCondition("Person.Age", "is in the range", "18"); Assert.IsFalse(condition.IsValid(_context)); }
public void DateIsNotInTheLastConditionIsValid() { var condition = new ExpressionCondition("Person.BirthDate", "is not in the last", "2", "months"); Assert.IsTrue(condition.IsValid(_context)); }
public void StringContainsConditionIsValid() { var condition = new ExpressionCondition("Person.Sex", "contains", "Male"); Assert.IsTrue(condition.IsValid(_context)); }
public void ConditionWithSimpleValueIsValid() { var condition = new ExpressionCondition("CompanyName", "is", "NextGen"); Assert.IsTrue(condition.IsValid(_context)); }
public void StringConditionWithEmptyRHSIsInvalid() { var condition = new ExpressionCondition("Person.Sex", "is"); Assert.IsFalse(condition.IsValid(_context)); }
public void StringConditionWithMoreThanOneRHSEntryIsInvalid() { var condition = new ExpressionCondition("Person.Sex", "is", "Male", "Female"); Assert.IsFalse(condition.IsValid(_context)); }
public void RHSOfNumberConditionMustBeANumber() { var condition = new ExpressionCondition("Person.Age", "is", "whatever"); Assert.IsFalse(condition.IsValid(_context)); }
public void OtherNumberConditionWithMoreThanOneRHSElementIsInvalid() { var condition = new ExpressionCondition("Person.Age", "is", "18", "19"); Assert.IsFalse(condition.IsValid(_context)); }
public void NumberWhateverConditionIsInvalid() { var condition = new ExpressionCondition("Person.Age", "whatever", "18"); Assert.IsFalse(condition.IsValid(_context)); }
public void ConditionWithMethodOnTargetIsValid() { var condition = new ExpressionCondition("Person.Age", "is", "18"); Assert.IsTrue(condition.IsValid(_context)); }
public void LeftHandSideWithTooManySegmentsIsInvalid() { var condition = new ExpressionCondition("Person.Spouse.Employer", "is", "NextGen"); Assert.IsFalse(condition.IsValid(_context)); }
public void ConditionWithPropertyOnTargetIsValid() { var condition = new ExpressionCondition("Person.Sex", "is", "Male"); Assert.IsTrue(condition.IsValid(_context)); }
public void NumberIsInTheRangeConditionIsValid() { var condition = new ExpressionCondition("Person.Age", "is in the range", "13", "19"); Assert.IsTrue(condition.IsValid(_context)); }
public void DateIsBeforeConditionIsValid() { var condition = new ExpressionCondition("Person.BirthDate", "is before", "1/1/2001"); Assert.IsTrue(condition.IsValid(_context)); }
public void NumberIsNotConditionIsValid() { var condition = new ExpressionCondition("Person.Age", "is not", "18"); Assert.IsTrue(condition.IsValid(_context)); }
public void StringEndsWithConditionIsValid() { var condition = new ExpressionCondition("Person.Sex", "ends with", "Male"); Assert.IsTrue(condition.IsValid(_context)); }
public void NumberIsGreaterThanConditionIsValid() { var condition = new ExpressionCondition("Person.Age", "is greater than", "18"); Assert.IsTrue(condition.IsValid(_context)); }
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; }
public void StringIsNotConditionIsValid() { var condition = new ExpressionCondition("Person.Sex", "is not", "Male"); Assert.IsTrue(condition.IsValid(_context)); }
public void StringWhateverConditionIsInvalid() { var condition = new ExpressionCondition("Person.Sex", "whatever", "Male"); Assert.IsFalse(condition.IsValid(_context)); }
public void DateIsInTheRangeConditionRequiresTwoDates() { var condition1 = new ExpressionCondition("Person.BirthDate", "is in the range", "1/1/2001"); Assert.IsFalse(condition1.IsValid(_context)); var condition2 = new ExpressionCondition("Person.BirthDate", "is in the range", "1/1/2001", "2/29/2001"); Assert.IsFalse(condition2.IsValid(_context)); }