예제 #1
0
        public void ChangeValidation()
        {
            var factory = new RuleFactory <Entity>();
            RangeValidation <int> rangeValidation = ValidationFactory.Range(0, 10, true, true);
            var rule = factory.CreateValidationRule(en => en.Number, rangeValidation)
                       .Start();

            var e = new Entity {
                Number = -3
            };
            var r = (PredefinedValidationRule)e.Extensions.AddRuleFromPrototype(rule);

            e.Extensions.BrokenRules.Count.ShouldEqual(1);

            var e2 = new Entity {
                Number = -3
            };

            e2.Extensions.AddRuleFromPrototype(rule);
            e2.Extensions.BrokenRules.Count.ShouldEqual(1);

            ((RangeValidation <int>)r.ValidationStrategy).Low = -10;
            e.Extensions.Validate();
            e2.Extensions.Validate();

            e.Extensions.BrokenRules.Count.ShouldEqual(0);
            e2.Extensions.BrokenRules.Count.ShouldEqual(1);
        }
예제 #2
0
        public void AddRuleFromFactory()
        {
            var factory = new RuleFactory <Entity>();
            var rule    = factory.CreateValidationRule(en => en.Number < 5);

            var e = new Entity();

            e.Extensions.AddRule(rule);
        }
예제 #3
0
        public void RulesFromPrototype()
        {
            var factory = new RuleFactory <Entity>();
            var rule    = factory.CreateValidationRule(en => en.Number > 5);

            var e = new Entity();

            TestTime.Measure(() => e.Extensions.AddRuleFromPrototype(rule));
        }
예제 #4
0
        public void RuleFactory()
        {
            var e = new Entity();

            var f    = new RuleFactory <Entity>();
            var rule = f.CreateValidationRule(en => en.Number < 4)
                       .WithName("NumberLessThan").Start();

            e.Extensions.Rules.Add(rule);

            rule.State.ShouldEqual(RuleState.Enabled);
        }
예제 #5
0
        public void AddFuncRuleFromPrototype()
        {
            var factory = new RuleFactory <Entity>();
            var rule    = factory.CreateValidationRule(en => en.Number > 5).Start();

            var e = new Entity();

            e.Extensions.AddRuleFromPrototype(rule);

            e.Extensions.BrokenRules.Count.ShouldEqual(1);
            e.Number = 8;
            e.Extensions.BrokenRules.Count.ShouldEqual(0);
        }
예제 #6
0
        public void CreateRules()
        {
            var factory = new RuleFactory <Entity>();

            factory.CreateActionRule(en => en.Name.ToString());
            factory.CreateActionRuleWithoutDependency(en => en.Name.ToString())
            .WithDependencies(en => en.Number);

            factory.CreateValidationRule(en => en.Number < 10);
            factory.CreateValidationRuleWithoutDependency(en => en.Number < 10)
            .WithDependencies(en => en.Number);

            factory.CreateBusinessRule(en => en.Number2 + en.Number3, en => en.Number);
        }
예제 #7
0
 public static IEnumerable<Rule> RulePrototype(Type type)
 {
     var f = new RuleFactory<RuleInitializerEntity>();
     yield return f.CreateValidationRule(o => o.Value == 0);
 }