示例#1
0
 public void AddItemTest_withQuantity_itemNotInCartAlready_itemAddedWithQuantity() {
     ShoppingCart cart = new ShoppingCart();
     Item item = new Item("Apple");
     cart.AddItem(item, 3);
     Assert.IsTrue(cart.DoesCartContainItem(item));
     Assert.AreEqual(3, cart.GetLineItemForItem(item).Quantity);
 }
示例#2
0
        public void AddItemTest_itemNotInCart_addsItem() {
            ShoppingCart cart = new ShoppingCart();
            Assert.AreEqual(0, cart.CountOfItems);

            Item item = new Item("Apple");
            cart.AddItem(item);
            Assert.IsTrue(cart.DoesCartContainItem(item));
            Assert.AreEqual(1, cart.CountOfItems);
        }
示例#3
0
        public void AddItemTest_itemInCart_addsAdditionalItemToLineItemCount() {
            ShoppingCart cart = new ShoppingCart();
            Item item = new Item("Apple");
            cart.AddItem(item);

            Assert.IsTrue(cart.DoesCartContainItem(item));
            Assert.AreEqual(1, cart.CountOfItems);

            cart.AddItem(item);
            Assert.AreEqual(1, cart.CountOfItems);
            LineItem lineItem = cart.GetLineItemForItem(item);
            Assert.AreEqual(2, lineItem.Quantity);
        }
        public ShoppingCart GetShoppingCart(String filename) {
            if (!File.Exists(filename)) {
                Console.WriteLine("File does not exist: " + filename);
                return new ShoppingCart();
            }

            string[] items = File.ReadAllLines(filename);

            ShoppingCart cart = new ShoppingCart();
            foreach (string item in items) {
                if (item.Trim().Length == 0) {
                    continue;
                }
                cart.AddItem(new Item(item.Trim()));
            }
            return cart;
        }
 public void PrintShoppingCart(ShoppingCart cart) {
     Console.WriteLine("Shopping Cart");
     Console.WriteLine("-------------");
     foreach (LineItem lineItem in cart.GetLineItems()) {
         Console.WriteLine("- {0}, Qty: {1}, Regular Price: ${2}",
             lineItem.Item.ItemName,
             lineItem.Quantity,
             String.Format("{0:0.00}",lineItem.PricePerUnit));
         if (lineItem.Promotion != null) {
             Console.WriteLine("    Promotion Applied: {0}", lineItem.Promotion.GetPromotionDescription());
             List<string> promotionText = lineItem.Promotion.GetPromotionText(lineItem);
             foreach (string textLine in promotionText) {
                 Console.WriteLine("    {0}", textLine);
             }                    
         }
         Console.WriteLine("                                                               Cost: ${0}", String.Format("{0:0.00}",lineItem.TotalCost));
     }
     Console.WriteLine("-------------");
     Console.WriteLine("Total Bill: ${0}", String.Format("{0:0.00}",cart.GetTotal()));
 }
示例#6
0
 public void DoesCartHaveGreaterThanOrEqualItems_itemInCart_quantityIsNotGreater_returnsFalse() {
     ShoppingCart cart = new ShoppingCart();
     Item item = new Item("Apple");
     cart.AddItem(item, 1);
     Assert.IsFalse(cart.DoesCartHaveGreaterThanOrEqualItems(item, 3));
 }
示例#7
0
 public void DoesCartHaveGreaterThanOrEqualItems_itemNotInCart_returnsFalse() {
     ShoppingCart cart = new ShoppingCart();
     Assert.IsFalse(cart.DoesCartHaveGreaterThanOrEqualItems(new Item("Apple"), 1));
 }
示例#8
0
 public void DoesCartHaveGreaterThanOrEqualItems_negativeQuantity_expectException() {
     ShoppingCart cart = new ShoppingCart();
     cart.DoesCartHaveGreaterThanOrEqualItems(new Item("Apple"), -1);
 }
示例#9
0
 public void DoesCartHaveGreaterThanOrEqualItems_nullItem_expectException() {
     ShoppingCart cart = new ShoppingCart();
     cart.DoesCartHaveGreaterThanOrEqualItems(null, 1);
 }
示例#10
0
 public void ApplyPromotion(ShoppingCart cart) {
     cart.AttachPromotionToItem(item, this);
 }
示例#11
0
 public void AddItemTest_withQuantity_nullItem_expectException() {
     ShoppingCart cart = new ShoppingCart();
     cart.AddItem(null, 1);
 }
示例#12
0
 public void AttachPromotionToItemTest_nullItem_expectException() {
     ShoppingCart cart = new ShoppingCart();
     cart.AttachPromotionToItem(null, new QuantityPricePromotion(new Item("Apple"), "[email protected]"));
 }
示例#13
0
 public void GetLineItemForItemTest_itemInCart_returnsNull() {
     ShoppingCart cart = new ShoppingCart();
     Item item = new Item("Apple");
     cart.AddItem(item);
     LineItem lineItem = cart.GetLineItemForItem(item);
     Assert.IsNotNull(lineItem);
 }
示例#14
0
 public void GetLineItemForItemTest_itemNotInCart_returnsNull() {
     ShoppingCart cart = new ShoppingCart();
     LineItem lineItem = cart.GetLineItemForItem(new Item("Apple"));
     Assert.IsNull(lineItem);
 }
示例#15
0
 public void GetLineItemForItemTest_nullItem_expectException() {
     ShoppingCart cart = new ShoppingCart();
     cart.GetLineItemForItem(null);
 }
示例#16
0
 public void AttachPromotionToItemTest_nullPromotion_expectException() {
     ShoppingCart cart = new ShoppingCart();
     cart.AttachPromotionToItem(new Item("Apple"), null);
 }
示例#17
0
 public void AddItemTest_itemIsNull_expectException() {
     ShoppingCart cart = new ShoppingCart();
     cart.AddItem(null);
 }
示例#18
0
 public void AddItemTest_withQuantity_negativeQuantity_expectException() {
     ShoppingCart cart = new ShoppingCart();
     cart.AddItem(new Item("Apple"), -1);
 }
示例#19
0
 public void AttachPromotionToItemTest_itemNotInCart_nothingHappens() {
     ShoppingCart cart = new ShoppingCart();
     Item item = new Item("Apple");
     Item item2 = new Item("Bananas");
     cart.AddItem(item);
     cart.AttachPromotionToItem(item2, new QuantityPricePromotion(item2, "[email protected]"));
     LineItem lineItem = cart.GetLineItemForItem(item);
     Assert.IsNull(lineItem.Promotion);
 }
示例#20
0
        public void GetTotalTest_validTotalsReturned() {
            ShoppingCart cart = new ShoppingCart();
            Item apple = new Item("Apple");
            Item bananas = new Item("Bananas");

            cart.AddItem(apple, 3);
            cart.AddItem(bananas, 3);

            LineItem applesLineItem = cart.GetLineItemForItem(apple);
            applesLineItem.PricePerUnit = 2.00;

            LineItem bananasLineItem = cart.GetLineItemForItem(bananas);
            bananasLineItem.PricePerUnit = 3.00;

            Assert.AreEqual(15.00, cart.GetTotal());
        }
示例#21
0
 public bool DoesPromotionApply(ShoppingCart cart) {
     if (cart == null) {
         throw new ArgumentException(ERROR_MSG_NULL_SHOPPING_CART);
     }
     return cart.DoesCartHaveGreaterThanOrEqualItems(item, MinimumNumberItemsForPromotion);
 }