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)); }
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))); }