Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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 );
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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.");
        }
Exemplo n.º 14
0
 public void CreatePropertyRule_WithNullPropertyExpression_ThrowsArgumentException()
 {
     PropertyRule.CreatePropertyRule <Customer, string> (null, "Rule 1");
 }
Exemplo n.º 15
0
        public void CreatePropertyRule_WithPropertyExpression_ReturnsPropertyRule()
        {
            var rule = PropertyRule.CreatePropertyRule <Customer, string> (c => c.FirstName, "Rule 1");

            Assert.IsInstanceOfType(rule, typeof(PropertyRule));
        }
Exemplo n.º 16
0
        public void AddConstraint_WithNullContraint_ThrowsArgumentException()
        {
            var rule = PropertyRule.CreatePropertyRule <Customer, string> (c => c.FirstName, "Rule 1");

            rule.AddConstraint(null);
        }
Exemplo n.º 17
0
 public void CreatePropertyRule_WithNullName_ThrowsArgumentException()
 {
     PropertyRule.CreatePropertyRule <Customer, string> (c => c.FirstName, null);
 }