public void ContractPriceShouldOverrideDefaultPriceTest() { _priceBuilder.AddDefaultPriceRule("33333", 20.99m).AddContractPrice("33333", 15.99m, "AA11AA"); var engine = new Engine(_priceBuilder.Rules); _itemBuilder.AddItem("33333", 3.99m, 1); _customer.Setup(c => c.Reference).Returns("AA11AA"); var actual = engine.ApplyRules(_itemBuilder.Items, _customer.Object); Assert.AreEqual(1, actual.Count()); Assert.AreEqual(15.99m, actual.First().Price); }
public void PerformanceTest() { for (var i = 0; i < 15000; i++) { _priceBuilder.AddDefaultPriceRule(i.ToString(), 20.99m); _priceBuilder.AddContractPrice(i.ToString(), 15.99m, "AAAAAA"); } _priceBuilder.AddBogof("11111", 20.99m); var engine = new Engine(_priceBuilder.Rules); var items = _itemBuilder.AddItem("52345", 5.99m, 1).AddItem("33333", 3.99m, 1).AddItem("44444", 15.99m, 1).Items; var timer = new Stopwatch(); timer.Start(); engine.ApplyRules(items, _customer.Object); timer.Stop(); Console.WriteLine(timer.ElapsedMilliseconds); Assert.IsTrue(timer.ElapsedMilliseconds < 300); }