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}"); }
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); }