Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            if (args == null)
            {
                return;
            }

            var serviceProvider = new ServiceCollection()
                                  .AddTransient <IDiscountProvider, DiscountProvider>()
                                  .AddTransient <IDiscountManager, DiscountManager>()
                                  .AddTransient <IPurchaseManager, PurchaseManager>()
                                  .BuildServiceProvider();

            var purchase = new CustomerPurchase();
            var prices   = new Dictionary <ItemType, double>()
            {
                { ItemType.Apple, 0.5 },
                { ItemType.Banana, 0.7 },
                { ItemType.Orange, 0.45 },
            };

            foreach (var item in args)
            {
                if (Enum.TryParse(item, out ItemType type) &&
                    prices.TryGetValue(type, out double price))
                {
                    purchase.AddItem(new PurchasedItem(type, price));
                }
            }

            var total = serviceProvider.GetService <IPurchaseManager>().GetPurchaseTotal(purchase);

            Console.WriteLine($"The total of purchases is: {total} pounds");
            Console.ReadKey();
        }
 public void AddItem_NullItem_ShouldThrow()
 {
     Assert.ThrowsException <ArgumentNullException>(() => _purchase.AddItem(null));
 }
        public void GetPurchaseTotal_NoDiscount()
        {
            _purchase.AddItem(new PurchasedItem(ItemType.Apple, 0.5));
            _purchase.AddItem(new PurchasedItem(ItemType.Apple, 0.5));
            _purchase.AddItem(new PurchasedItem(ItemType.Apple, 0.5));

            var total = _purchaseManager.GetPurchaseTotal(_purchase);

            Assert.AreEqual(1.5, total);
        }