Beispiel #1
0
        public void RulesWithMultipleParameters_ShouldReturnProperly()
        {
            const string source  = "return abc.abc == def.abc;";
            const string source2 = "return abc.abc != def.abc;";
            var          pm      = new StubRuleProvider();
            var          group   = new RuleGroup("group", new List <RuleParameter> {
                new RuleParameter(typeof(Thing), "abc"), new RuleParameter(typeof(Thing), "def")
            });

            var rule0 = Rule.CreateRule().Named("rule10").WithGroup(group).WithSource(source).LoadNow().Build();
            var rule1 = Rule.CreateRule().Named("rule11").WithGroup(group).WithSource(source2).LoadNow().Build();

            pm.SetRules(rule0, rule1);

            RuleRunner runner = new RuleRunner(pm);

            var res = runner.RunRules("group", new Thing {
                abc = 4
            }, new Thing {
                abc = 4
            });                                                                               // try with dummy data class
            var en = res.GetEnumerator();

            en.MoveNext();
            Assert.AreEqual("rule10", en.Current.RuleName);
            Assert.AreEqual(true, en.Current.Result);

            en.MoveNext();
            Assert.AreEqual("rule11", en.Current.RuleName);
            Assert.AreEqual(false, en.Current.Result);
        }
Beispiel #2
0
        public void RunRule_ImproperParams_ShouldThrow()
        {
            const string source = "return true;";
            var          pm     = new StubRuleProvider();
            var          group  = new RuleGroup("group", null);
            var          rule   = Rule.CreateRule().Named("rule").WithGroup(group).WithSource(source).Build();

            pm.SetRules(rule);
            RuleRunner runner  = new RuleRunner(pm);
            var        results = runner.RunRules("group", 4).ToList(); // to list is required for the rules to actually run.

            Assert.IsFalse(results.Single().HasResult);
            Assert.AreEqual("rule", results.Single().RuleName);
            var x = results.Single().Result;
        }
        public void Setup()
        {
            runner         = new RuleRunner();
            solutionResult = new RulesResultBase();
            projectResult  = new RulesResultBase();

            project  = new Project("", new Guid());
            solution = new Solution("", new[] { project });

            solutionRuleProcessor = MockRepository.GenerateMock <ISolutionRuleProcessor>();
            solutionRuleProcessor.Expect(r => r.RunRules(solution)).Return(solutionResult);

            projectRuleProcessor = MockRepository.GenerateMock <IProjectRuleProcessor>();
            projectRuleProcessor.Expect(r => r.RunRules(project)).Return(projectResult);

            runner.SolutionProcessors = new[] { solutionRuleProcessor };
            runner.ProjectProcessors  = new[] { projectRuleProcessor };

            results = runner.RunRules(solution);
        }
Beispiel #4
0
        public IEnumerable <RuleExecutionResult> Run(string group, object[] parameters)
        {
            RuleRunner runner = new RuleRunner(this);

            return(runner.RunRules(group, parameters));
        }