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