Beispiel #1
0
        public void Can_stop()
        {
            var person = new Person {
                Possessions = new List <Item> {
                    new Item(), new Item(), new Item()
                }
            };

            var rule = new ForEachRule <Person, Item>(p => p.Possessions);

            rule.Rules.Add(CreateMock <RuleBase <Item> >());
            rule.Rules.Add(CreateMock <RuleBase <Item> >());

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[0])).Return(new RuleExecutionResult());
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[0])).Return(new RuleExecutionResult());

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[1])).Return(new RuleExecutionResult {
                StopEvaluation = true
            });
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[1])).Repeat.Never();

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[2])).Repeat.Never();
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[2])).Repeat.Never();

            rule.Validate(person);

            VerifyAll();
        }
Beispiel #2
0
        public void Should_validate_each_rule_against_each_object_in_list()
        {
            var person = new Person {
                Possessions = new List <Item> {
                    new Item(), new Item(), new Item()
                }
            };

            var rule = new ForEachRule <Person, Item>(p => p.Possessions);

            rule.Rules.Add(CreateMock <RuleBase <Item> >());
            rule.Rules.Add(CreateMock <RuleBase <Item> >());

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[0])).Return(new RuleExecutionResult());
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[0])).Return(new RuleExecutionResult());

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[1])).Return(new RuleExecutionResult());
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[1])).Return(new RuleExecutionResult());

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[2])).Return(new RuleExecutionResult());
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[2])).Return(new RuleExecutionResult());

            rule.Validate(person);

            VerifyAll();
        }
Beispiel #3
0
        public IRuleBuilder <TItem> ForEach <TItem>(Func <TInstance, IList <TItem> > listExpression)
        {
            var rule = new ForEachRule <TInstance, TItem>(listExpression);

            AddRule(rule);

            return(new ForEachRuleBuilder <TInstance, TItem>(rule));
        }
Beispiel #4
0
        public void Should_return_all_broken_rules()
        {
            var person = new Person { Possessions = new List<Item> { new Item(), new Item() } };

            var rule = new ForEachRule<Person, Item>(p => p.Possessions);
            rule.Rules.Add(CreateMock<RuleBase<Item>>());
            rule.Rules.Add(CreateMock<RuleBase<Item>>());

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[0])).Return(new RuleExecutionResult(new List<BrokenRule> { new BrokenRule(null, null, "", "", null) }));
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[0])).Return(new RuleExecutionResult(new List<BrokenRule> { new BrokenRule(null, null, "", "", null), new BrokenRule(null, null, "", "", null) }));

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[1])).Return(new RuleExecutionResult(new List<BrokenRule> { new BrokenRule(null, null, "", "", null), new BrokenRule(null, null, "", "", null) }));
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[1])).Return(new RuleExecutionResult(new List<BrokenRule> { new BrokenRule(null, null, "", "", null) }) { StopEvaluation = true });

            var result = rule.Validate(person);

            Assert.That(result.IsValid, Is.False);
            Assert.That(result.StopEvaluation, Is.True);
            Assert.That(result.BrokenRules.Count, Is.EqualTo(6));
        }
Beispiel #5
0
        public void Should_validate_each_rule_against_each_object_in_list()
        {
            var person = new Person {Possessions = new List<Item>{new Item(), new Item(), new Item()}};

            var rule = new ForEachRule<Person, Item>(p => p.Possessions);
            rule.Rules.Add(CreateMock<RuleBase<Item>>());
            rule.Rules.Add(CreateMock<RuleBase<Item>>());

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[0])).Return(new RuleExecutionResult());
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[0])).Return(new RuleExecutionResult());

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[1])).Return(new RuleExecutionResult());
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[1])).Return(new RuleExecutionResult());

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[2])).Return(new RuleExecutionResult());
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[2])).Return(new RuleExecutionResult());

            rule.Validate(person);

            VerifyAll();
        }
Beispiel #6
0
        public void Can_stop()
        {
            var person = new Person { Possessions = new List<Item> { new Item(), new Item(), new Item() } };

            var rule = new ForEachRule<Person, Item>(p => p.Possessions);
            rule.Rules.Add(CreateMock<RuleBase<Item>>());
            rule.Rules.Add(CreateMock<RuleBase<Item>>());

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[0])).Return(new RuleExecutionResult());
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[0])).Return(new RuleExecutionResult());

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[1])).Return(new RuleExecutionResult {StopEvaluation = true});
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[1])).Repeat.Never();

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[2])).Repeat.Never();
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[2])).Repeat.Never();

            rule.Validate(person);

            VerifyAll();
        }
Beispiel #7
0
        public void Should_return_all_broken_rules()
        {
            var person = new Person {
                Possessions = new List <Item> {
                    new Item(), new Item()
                }
            };

            var rule = new ForEachRule <Person, Item>(p => p.Possessions);

            rule.Rules.Add(CreateMock <RuleBase <Item> >());
            rule.Rules.Add(CreateMock <RuleBase <Item> >());

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[0])).Return(new RuleExecutionResult(new List <BrokenRule> {
                new BrokenRule(null, null, "", "", null)
            }));
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[0])).Return(new RuleExecutionResult(new List <BrokenRule> {
                new BrokenRule(null, null, "", "", null), new BrokenRule(null, null, "", "", null)
            }));

            rule.Rules[0].Expect(r => r.Validate(person.Possessions[1])).Return(new RuleExecutionResult(new List <BrokenRule> {
                new BrokenRule(null, null, "", "", null), new BrokenRule(null, null, "", "", null)
            }));
            rule.Rules[1].Expect(r => r.Validate(person.Possessions[1])).Return(new RuleExecutionResult(new List <BrokenRule> {
                new BrokenRule(null, null, "", "", null)
            })
            {
                StopEvaluation = true
            });

            var result = rule.Validate(person);

            Assert.That(result.IsValid, Is.False);
            Assert.That(result.StopEvaluation, Is.True);
            Assert.That(result.BrokenRules.Count, Is.EqualTo(6));
        }
 public ForEachRuleBuilder(ForEachRule <TInstance, TItem> parentRule)
 {
     this.parentRule = parentRule;
 }