public double CalculateValueForItem(BillItem billItem) { ProductValueCalculator productValueCalculator; double productValue = 0; switch (billItem?.Product?.Category) { case Category.A: productValueCalculator = new ProductValueCalculator(new ProductCatAStrategy()); break; case Category.B: productValueCalculator = new ProductValueCalculator(new ProductCatBStrategy()); break; case Category.C: productValueCalculator = new ProductValueCalculator(new ProductCatCStrategy()); break; default: productValueCalculator = new ProductValueCalculator(new ProductCatCStrategy()); break; } productValue = productValueCalculator.CalculateValue(billItem); return(productValue); }
public void Should_Add_TenPercentTax_For_CategoryCProducts() { ProductValueCalculator productValueCalculator = new ProductValueCalculator(new ProductCatCStrategy()); double productValue = productValueCalculator.CalculateValue(new BillItem() { Product = new Product() { Rate = 100 }, Quantity = 1 }); Assert.AreEqual(productValue.ToString("F4"), 100.ToString("F4")); }