public void Constrain_GivenNullConstraint_ThrowsArgumentException() { var rule = PropertyRule.CreatePropertyRule <Customer, string> (c => c.FirstName, "Rule1"); var ruleBuilder = new PropertyRuleBuilder <RuleEngineContext <Customer>, Customer, string> (rule); ruleBuilder.Constrain(null); }
public void WithPrioroty_RulePriorityIsSet() { var rule = PropertyRule.CreatePropertyRule <Customer, string> (c => c.FirstName, "Rule1"); var ruleBuilder = new PropertyRuleBuilder <RuleEngineContext <Customer>, Customer, string> (rule); ruleBuilder.WithPriority(5); Assert.AreEqual(5, rule.Priority); }
public void LessThenOrEqualTo_ValueIsEqualToProperty_RulePasses () { var rule = PropertyRule.CreatePropertyRule<Customer, int> ( c => c.Age, "Rule 1" ); var ruleBuilder = new PropertyRuleBuilder<RuleEngineContext<Customer>, Customer, int> ( rule ); ruleBuilder.LessThenOrEqualTo ( 10 ); var customer = new Customer { Age = 10 }; var context = new RuleEngineContext<Customer> ( customer ); var whenResult = rule.WhenClause ( context ); Assert.IsTrue ( whenResult ); }
public void AddConstraint_WithNotNullContraint_ConstraintIsAdded() { var rule = PropertyRule.CreatePropertyRule <Customer, string> (c => c.FirstName, "Rule 1"); rule.AddConstraint(new NotNullConstraint()); var customer = new Customer(); var context = new RuleEngineContext <Customer> (customer); var whenResult = rule.WhenClause(context); Assert.IsFalse(whenResult); }
public void MeetsSpecification_PropertyDoesNotMeetSpecification_RuleFails() { var rule = PropertyRule.CreatePropertyRule <Customer, int> (c => c.Age, "Rule 1"); var ruleBuilder = new PropertyRuleBuilder <RuleEngineContext <Customer>, Customer, int> (rule); ruleBuilder.MeetsSpecification(new TestSpecification()); var customer = new Customer { Age = 15 }; var context = new RuleEngineContext <Customer> (customer); var whenResult = rule.WhenClause(context); Assert.IsFalse(whenResult); }
public void ExclusiveBetween_PropertyIsGreaterThanEndValue_RuleFails() { var rule = PropertyRule.CreatePropertyRule <Customer, int> (c => c.Age, "Rule 1"); var ruleBuilder = new PropertyRuleBuilder <RuleEngineContext <Customer>, Customer, int> (rule); ruleBuilder.ExclusiveBetween(5, 15); var customer = new Customer { Age = 25 }; var context = new RuleEngineContext <Customer> (customer); var whenResult = rule.WhenClause(context); Assert.IsFalse(whenResult); }
public void MatchesRegex_PropertyDoesNotMatchRegex_RuleFails() { var rule = PropertyRule.CreatePropertyRule <Customer, int> (c => c.Age, "Rule 1"); var ruleBuilder = new PropertyRuleBuilder <RuleEngineContext <Customer>, Customer, int> (rule); ruleBuilder.MatchesRegex("6"); var customer = new Customer { Age = 5 }; var context = new RuleEngineContext <Customer> (customer); var whenResult = rule.WhenClause(context); Assert.IsFalse(whenResult); }
public void Constrain_WithAConstraint_AssignsConstraintToRule() { var rule = PropertyRule.CreatePropertyRule <Customer, string> (c => c.FirstName, "Rule1"); var ruleBuilder = new PropertyRuleBuilder <RuleEngineContext <Customer>, Customer, string> (rule); ruleBuilder.Constrain(new NotNullConstraint()); var customer = new Customer { Age = 10 }; var context = new RuleEngineContext <Customer> (customer); var whenResult = rule.WhenClause(context); Assert.IsFalse(whenResult); }
public void MinLength_PropertyLengthIsEqualToMaxLength_RulePasses() { var rule = PropertyRule.CreatePropertyRule <Customer, string> (c => c.FirstName, "Rule 1"); var ruleBuilder = new PropertyRuleBuilder <RuleEngineContext <Customer>, Customer, string> (rule); ruleBuilder.MinLength(5); var customer = new Customer { FirstName = "12345" }; var context = new RuleEngineContext <Customer> (customer); var whenResult = rule.WhenClause(context); Assert.IsTrue(whenResult); }
public void MaxLength_PropertyLengthIsGreaterThanMaxLength_RuleFails() { var rule = PropertyRule.CreatePropertyRule <Customer, string> (c => c.FirstName, "Rule 1"); var ruleBuilder = new PropertyRuleBuilder <RuleEngineContext <Customer>, Customer, string> (rule); ruleBuilder.MaxLength(5); var customer = new Customer { FirstName = "123456" }; var context = new RuleEngineContext <Customer> (customer); var whenResult = rule.WhenClause(context); Assert.IsFalse(whenResult); }
public void EqualTo_ValueNotEqualToProperty_RuleFails() { var rule = PropertyRule.CreatePropertyRule <Customer, int> (c => c.Age, "Rule 1"); var ruleBuilder = new PropertyRuleBuilder <RuleEngineContext <Customer>, Customer, int> (rule); ruleBuilder.GreaterThan(15); var customer = new Customer { Age = 10 }; var context = new RuleEngineContext <Customer> (customer); var whenResult = rule.WhenClause(context); Assert.IsFalse(whenResult); }
public void ExclusiveBetween_PropertyInBetweenValues_RulePasses() { var rule = PropertyRule.CreatePropertyRule <Customer, int> (c => c.Age, "Rule 1"); var ruleBuilder = new PropertyRuleBuilder <RuleEngineContext <Customer>, Customer, int> (rule); ruleBuilder.ExclusiveBetween(5, 15); var customer = new Customer { Age = 10 }; var context = new RuleEngineContext <Customer> (customer); var whenResult = rule.WhenClause(context); Assert.IsTrue(whenResult); }
public void AddConstraint_WithNotNullContraint_ARuleViolationIsAdded() { var rule = PropertyRule.CreatePropertyRule <Customer, string> (c => c.FirstName, "Rule 1"); rule.AddConstraint(new NotNullConstraint()); rule.AutoValidate = true; var customer = new Customer(); var context = new RuleEngineContext <Customer> (customer); rule.WhenClause(context); foreach (var elseThenClause in rule.ElseThenClauses) { elseThenClause(context); } Assert.IsTrue(context.RuleViolationReporter.Count() == 1, "No Rule Violation was created."); }
public void CreatePropertyRule_WithNullPropertyExpression_ThrowsArgumentException() { PropertyRule.CreatePropertyRule <Customer, string> (null, "Rule 1"); }
public void CreatePropertyRule_WithPropertyExpression_ReturnsPropertyRule() { var rule = PropertyRule.CreatePropertyRule <Customer, string> (c => c.FirstName, "Rule 1"); Assert.IsInstanceOfType(rule, typeof(PropertyRule)); }
public void AddConstraint_WithNullContraint_ThrowsArgumentException() { var rule = PropertyRule.CreatePropertyRule <Customer, string> (c => c.FirstName, "Rule 1"); rule.AddConstraint(null); }
public void CreatePropertyRule_WithNullName_ThrowsArgumentException() { PropertyRule.CreatePropertyRule <Customer, string> (c => c.FirstName, null); }