public void BasicOperatorTest()
        {
            // rule DTO
            var car = new CarDTO
            {
                Make = "Ford",
                Year=2010,
                Model="Expedition",
                AskingPrice=10000.0000m,
                SellingPrice=9000.0000m
            };

            // build up some rules
            var carRule1 = new Rule("Year", "2010", "GreaterThanOrEqual");
            var carRule2 = new Rule("AskingPrice", "10000.0000", "LessThanOrEqual");
            var carRule3= new Rule("Make", "Ford", "Equals");
            var carRule4 = new Rule("Model", "Ex", "StartsWith");  //gets the excursion, explorer, expedition -gass guzzlers

            var re = new RuleEngine();

            // Compile the rules as a seperate step
            Func<CarDTO, bool> carRule1Compiled = re.Compile<CarDTO>(carRule1);
            Func<CarDTO, bool> carRule2Compiled = re.Compile<CarDTO>(carRule2);
            Func<CarDTO, bool> carRule3Compiled = re.Compile<CarDTO>(carRule3);
            Func<CarDTO, bool> carRule4Compiled = re.Compile<CarDTO>(carRule4);

            Assert.AreEqual(true,carRule1Compiled(car));
            Assert.AreEqual(true,carRule2Compiled(car));
            Assert.AreEqual(true,carRule3Compiled(car));
            Assert.AreEqual(true,carRule4Compiled(car));
        }
Esempio n. 2
0
        public void TestRuleCompilation()
        {
            var basketItem = new BasketItem(3, null);

            List <Func <BasketItem, bool> > gs = new List <Func <BasketItem, bool> >
            {
                basketItem => basketItem.Num >= 2,
                basketItem => basketItem.Num >= 4
            };
            var fs = _rules.Select(x => _ruleEngine.Compile <BasketItem, bool>(x));

            Assert.That(fs, Is.All.InstanceOf <Func <BasketItem, bool> >());
            Assert.AreEqual(gs.Select(g => g(basketItem)),
                            fs.Select(f => f(basketItem)));
        }