public void TestBrokenSavingRule()
        {
            const string rulesFile = "brokenrules-saving.txt";
            const string cartFile = "shoppingcart-5apples.txt";
            const bool compound = true;

            var cp = new CartProcessor(rulesFile, cartFile, compound);

            var rules = ruleMapper.ReadRules(rulesFile);
            Assert.AreEqual(1, rules.Keys.Count);

            var cart = cartMapper.ReadShoppingList(cartFile);
            Assert.AreEqual(1, cart.Keys.Count);

            decimal saved;
            var total = cp.CalculateCartTotal(cart, rules, compound, out saved);

            Assert.AreEqual(5m, total);
            Assert.AreEqual(0m, saved);
        }
        public void TestCalculateMultipleTotal()
        {
            const string rulesFile = "price-rules-many.txt";
            const string cartFile = "shoppingcart-ApplesBananasOranges.txt";
            const bool compound = true;

            var cp = new CartProcessor(rulesFile, cartFile, compound);

            var rules = ruleMapper.ReadRules(rulesFile);
            Assert.AreEqual(3, rules.Keys.Count);

            var cart = cartMapper.ReadShoppingList(cartFile);
            Assert.AreEqual(3, cart.Keys.Count);

            decimal saved;
            var total = cp.CalculateCartTotal(cart, rules, true, out saved);

            Assert.AreEqual(36m, total);
            Assert.AreEqual(10.85m, saved);
        }
        public void TestTotalNonCompound()
        {
            const string rulesFile = "rules-compound.txt";
            const string cartFile = "shoppingcart-ApplesBananasOranges.txt";
            const bool compound = false;

            var cp = new CartProcessor(rulesFile, cartFile, compound);

            var rules = ruleMapper.ReadRules(rulesFile);
            Assert.AreEqual(3, rules.Keys.Count);

            var cart = cartMapper.ReadShoppingList(cartFile);
            Assert.AreEqual(3, cart.Keys.Count);

            decimal saved;
            var total = cp.CalculateCartTotal(cart, rules, compound, out saved);

            Assert.AreEqual(36m, total);
            Assert.AreEqual(13.25m, saved);
        }