public static void One_A_Item_Costs_50()
 {
     var cart = new ShoppingCart(nullProcessor);
     var aItem1 = new Item {Name = "A", Price = 50};
     cart.AddItem(aItem1);
     Assert.AreEqual(cart.Total, 50);
 }
 public static void One_B_Item_Costs_100()
 {
     var cart = new ShoppingCart(nullProcessor);
     var bItem1 = new Item {Name = "B", Price = 100};
     cart.AddItem(bItem1);
     Assert.AreEqual(cart.Total, 100);
 }
        public static void B_Item_Discount_Processor_Applies_Discount_Of_15_To_2_B_Items()
        {
            var discountProcessor = new BItemDiscountProcessor();
            var bItem1 = new Item { Name = "B", Price = 30 };
            var bItem2 = new Item { Name = "B", Price = 30 };

            var items = new List<Item>
            {
                bItem1,
                bItem2
            };

            var discountResult = discountProcessor.CalculateDiscountForItems(items);
            var discount = discountResult.DiscountAwarded;
            Assert.AreEqual(discount, 15);
        }
        public static void Four_A_Items_And_Two_B_Items_Costs_225()
        {
            var cart = new ShoppingCart(discountProcessors);
            var aItem1 = new Item { Name = "A", Price = 50 };
            var aItem2 = new Item { Name = "A", Price = 50 };
            var aItem3 = new Item { Name = "A", Price = 50 };
            var aItem4 = new Item { Name = "A", Price = 50 };
            var bItem1 = new Item { Name = "B", Price = 30 };
            var bItem2 = new Item { Name = "B", Price = 30 };

            cart.AddItem(aItem1);
            cart.AddItem(aItem2);
            cart.AddItem(aItem3);
            cart.AddItem(aItem4);
            cart.AddItem(bItem1);
            cart.AddItem(bItem2);
            Assert.AreEqual(cart.Total, 225);
        }
        public static void A_Item_Discount_Processor_Applies_Discount_Of_20_To_5_A_Items()
        {
            var discountProcessor = new AItemDiscountProcessor();
            var aItem1 = new Item { Name = "A", Price = 50 };
            var aItem2 = new Item { Name = "A", Price = 50 };
            var aItem3 = new Item { Name = "A", Price = 50 };
            var aItem4 = new Item { Name = "A", Price = 50 };
            var aItem5 = new Item { Name = "A", Price = 50 };

            var items = new List<Item>
            {
                aItem1, aItem2, aItem3, aItem4, aItem5
            };

            var discountResult = discountProcessor.CalculateDiscountForItems(items);
            var discount = discountResult.DiscountAwarded;
            Assert.AreEqual(discount, 20);
        }
 public static void Two_A_Items_Costs_100()
 {
     var cart = new ShoppingCart(nullProcessor);
     var aItem1 = new Item {Name = "A", Price = 50};
     var aItem2 = new Item {Name = "A", Price = 50};
     cart.AddItem(aItem1);
     cart.AddItem(aItem2);
     Assert.AreEqual(cart.Total, 100);
 }
 public static void Three_A_Items_Applies_Discount_Costing_130()
 {
     var aItemDiscountProcessor = new AItemDiscountProcessor();
     var cart = new ShoppingCart(new List<IDiscountProcessor> {aItemDiscountProcessor});
     var aItem1 = new Item {Name = "A", Price = 50};
     var aItem2 = new Item {Name = "A", Price = 50};
     var aItem3 = new Item {Name = "A", Price = 50};
     cart.AddItem(aItem1);
     cart.AddItem(aItem2);
     cart.AddItem(aItem3);
     Assert.AreEqual(cart.Total, 130);
 }