Exemplo n.º 1
0
        public void RunRulesWithListTest()
        {
            const string source  = "return abc.abc == 4;";
            const string source2 = "return abc.abc != 4;";
            var          pm      = new StubRuleProvider();
            var          group   = new RuleGroup("group", new List <RuleParameter> {
                new RuleParameter(typeof(Thing), "abc")
            });

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

            pm.SetRules(rule0, rule1, rule2);
            RuleRunner runner = new RuleRunner(pm);


            var res = runner.RunRulesWithList("group", new List <Tuple <string, object> > {
                Tuple.Create("abc", (object)new Thing {
                    abc = 4
                })
            });                                                                                                                                 // try with dummy data class
            var en = res.GetEnumerator();

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

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

            en.MoveNext();
            Assert.AreEqual("rule2", en.Current.RuleName);
            Assert.AreEqual(false, en.Current.Result);
        }