public void AndOperator_CombinesRules_CanBeWithoutAnyViolation() { BusinessRule rule1 = new RuleThatNeverHasAViolation(); BusinessRule rule2 = new RuleThatNeverHasAViolation(); BusinessRule result = rule1 & rule2; IEnumerable <BusinessRuleViolation> violations = result.CheckRule(); Assert.AreEqual(0, violations.Count()); }
public void AndOperator_CombinesRules_ViolationAreNotDistinct() { BusinessRule rule1 = new RuleThatAlwaysHasOneViolation(); BusinessRule rule2 = new RuleThatAlwaysHasOneViolation(); BusinessRule result = rule1 & rule2; IEnumerable <BusinessRuleViolation> violations = result.CheckRule(); Assert.AreEqual(2, violations.Count()); Assert.IsTrue(violations.All(v => v.ViolationMessage == "Always one violation")); }
public void AndOperator_CombinesRules_AndResultsInViolationListThatIncludeBoth() { BusinessRule rule1 = new RuleThatAlwaysHasOneViolation(); BusinessRule rule2 = new RuleThatAlwaysHasTwoViolations(); BusinessRule result = rule1 & rule2; IEnumerable <BusinessRuleViolation> violations = result.CheckRule(); Assert.AreEqual(3, violations.Count()); Assert.IsTrue(violations.Any(v => v.ViolationMessage == "Always one violation")); Assert.IsTrue(violations.Any(v => v.ViolationMessage == "First violation")); Assert.IsTrue(violations.Any(v => v.ViolationMessage == "Second violation")); }