Exemplo n.º 1
0
        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();
            }
            {
            }
        }
Exemplo n.º 2
0
        public void ConstructorSetsTheCorrectValueForType()
        {
            IDiscount milkDiscount        = new MilkDiscount();
            IDiscount butterBreadDiscount = new ButterBreadDiscount();

            Assert.AreEqual(milkDiscount.Type, DiscountType.Milk);
            Assert.AreEqual(butterBreadDiscount.Type, DiscountType.ButterBread);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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));
        }