static void Main(string[] args) { string fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"LogOutput.txt"); using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { InfoLogger logger = new InfoLogger(fs); ShoppingBasket basket = new ShoppingBasket(logger); basket.CreateProduct(ProductType.Bread, 1.0); basket.CreateProduct(ProductType.Butter, 0.8); basket.CreateProduct(ProductType.Milk, 1.15); basket.AddProduct(ProductType.Bread, 1); basket.AddProduct(ProductType.Butter, 2); basket.AddProduct(ProductType.Milk, 8); IDiscount butterBreadDiscount = new ButterBreadDiscount(); IDiscount milkDiscount = new MilkDiscount(); basket.AddDiscount(butterBreadDiscount); basket.AddDiscount(milkDiscount); basket.ProcessOrder(); } { } }
public void ConstructorSetsTheCorrectValueForType() { IDiscount milkDiscount = new MilkDiscount(); IDiscount butterBreadDiscount = new ButterBreadDiscount(); Assert.AreEqual(milkDiscount.Type, DiscountType.Milk); Assert.AreEqual(butterBreadDiscount.Type, DiscountType.ButterBread); }
public void TestApplyButterBreadDiscountForThreeButtersAndOneBread() { IProduct butter = new Product(ProductType.Butter, 0.8, 3); IProduct bread = new Product(ProductType.Bread, 1.0, 1); HashSet <IProduct> products = new HashSet <IProduct>() { butter, bread }; IDiscount butterBreadDiscount = new ButterBreadDiscount(); double result = butterBreadDiscount.Apply(products); Assert.AreEqual(result, 0.5); }
public decimal CalculateDiscount(int butterCount, int breadCount) { var priceProviderMock = new Mock <IPriceProvider>(); priceProviderMock.Setup(x => x.GetPrice(It.IsAny <string>())) .Returns(12m); var basketItems = new List <BasketItem> { new BasketItem(Products.Butter, butterCount), new BasketItem(Products.Bread, breadCount), new BasketItem(Products.Milk, 5), }; var discount = new ButterBreadDiscount(priceProviderMock.Object); return(discount.GetDiscount(basketItems)); }