public void TestCalculateMultipleSavings()
        {
            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);

            var savings = cp.CalculateAmountSaved(cart["apple"], rules["apple"], compound);
            Assert.AreEqual(10, savings);
            savings += cp.CalculateAmountSaved(cart["banana"], rules["banana"], compound);
            Assert.AreEqual(10.6m, savings);
            savings += cp.CalculateAmountSaved(cart["orange"], rules["orange"], compound);
            Assert.AreEqual(10.85m, savings);
        }
        public void TestSavingsNonCompoundRules()
        {
            const string rulesFile = "rules-compound.txt";
            const string cartFile = "shoppingcart-ApplesBananasOranges.txt";
            const bool compound = false;

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

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

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

            var savings = cp.CalculateAmountSaved(cart["apple"], rules["apple"], compound);
            Assert.AreEqual(10m, savings);
            savings += cp.CalculateAmountSaved(cart["banana"], rules["banana"], compound);
            Assert.AreEqual(13m, savings);
            savings += cp.CalculateAmountSaved(cart["orange"], rules["orange"], compound);
            Assert.AreEqual(13.25m, savings);
        }
        public void TestCalculateSavings()
        {
            const string rulesFile = "price-rules-apple.txt";
            const string cartFile = "shoppingcart-5apples.txt";
            const decimal expected = 0m;
            const bool compound = true;

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

            var cart = cartMapper.ReadShoppingList(cartFile);
            var rules = ruleMapper.ReadRules(rulesFile);

            var savings = cp.CalculateAmountSaved(cart["apple"], rules["apple"], compound);
            Assert.AreEqual(expected, savings);
        }