示例#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();
            }
            {
            }
        }
示例#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);
        }
示例#3
0
        public void AddDiscountAddsDiscountToTheBasket()
        {
            ShoppingBasket basket       = new ShoppingBasket(null);
            IDiscount      milkDiscount = new MilkDiscount();

            basket.AddDiscount(milkDiscount);
            Assert.IsTrue(basket.Discounts.Contains(milkDiscount));
        }
示例#4
0
        public void RemoveDiscountRemovesDiscountFromTheBasket()
        {
            ShoppingBasket basket       = new ShoppingBasket(null);
            IDiscount      milkDiscount = new MilkDiscount();

            basket.AddDiscount(milkDiscount);
            basket.RemoveDiscount(DiscountType.Milk);
            Assert.IsFalse(basket.Discounts.Contains(milkDiscount));
        }
示例#5
0
        public void TestApplyMilkDiscountForThreeMilks()
        {
            IProduct           milk     = new Product(ProductType.Milk, 1.15, 3);
            HashSet <IProduct> products = new HashSet <IProduct>()
            {
                milk
            };

            IDiscount milkDiscount = new MilkDiscount();
            double    result       = milkDiscount.Apply(products);

            Assert.AreEqual(result, 0);
        }
示例#6
0
        public decimal CalculateDiscount(int milkCount)
        {
            var priceProviderMock = new Mock <IPriceProvider>();

            priceProviderMock.Setup(x => x.GetPrice(It.IsAny <string>()))
            .Returns(10m);

            var basketItems = new List <BasketItem>
            {
                new BasketItem(Products.Butter, 6),
                new BasketItem(Products.Bread, 10),
                new BasketItem(Products.Milk, milkCount)
            };

            var milkDiscount = new MilkDiscount(priceProviderMock.Object);

            return(milkDiscount.GetDiscount(basketItems));
        }