Exemplo n.º 1
0
            public static void Execute()
            {
                List <Pizza> pizzas = new List <Pizza>();

                pizzas.Add(new Pizza {
                    Crust = Crust.Regular, Price = 100, Size = Size.Medium
                });
                pizzas.Add(new Pizza {
                    Crust = Crust.Stuffed, Price = 150, Size = Size.Medium
                });
                pizzas.Add(new Pizza {
                    Crust = Crust.Thin, Price = 50, Size = Size.Large
                });
                pizzas.Add(new Pizza {
                    Crust = Crust.Stuffed, Price = 150, Size = Size.Medium
                });
                pizzas.Add(new Pizza {
                    Crust = Crust.Regular, Price = 100, Size = Size.Large
                });

                PizzaOrder pizzaOrder = new PizzaOrder {
                    Pizzas = pizzas
                };

                PizzaOrderingSystem orderingSystem = new PizzaOrderingSystem(Policies.DiscountAllThePizzas());
                decimal             price          = orderingSystem.ComputePrice(pizzaOrder);

                Console.WriteLine($"Discounted Price: {price}");
            }
Exemplo n.º 2
0
        public void Best_discount_for_big_order()
        {
            var pizzaOrderingSystem = new PizzaOrderingSystem(
                DiscountPolicyDelegates.DiscountAllThePizzas());
            var order = new PizzaOrder();

            order.Pizzas = new List <Pizza>();
            // Buy one get one
            for (int i = 0; i < 2; i++)
            {
                var pizza = new Pizza()
                {
                    Crust = Crust.Regular,
                    Price = 10.00m,
                    Size  = Size.Large
                };
                order.Pizzas.Add(pizza);
            }
            // Over 50 5% off
            for (int i = 0; i < 6; i++)
            {
                var pizza = new Pizza()
                {
                    Crust = Crust.Regular,
                    Price = 10.00m,
                    Size  = Size.Large
                };
                order.Pizzas.Add(pizza);
            }
            // Stuffed crust
            var stuffedCrust = new Pizza()
            {
                Crust = Crust.Stuffed,
                Price = 10.00m,
                Size  = Size.Large
            };

            order.Pizzas.Add(stuffedCrust);
            var price = pizzaOrderingSystem.ComputePrice(order);

            Assert.AreEqual(80.00m, price);
        }