Example #1
0
        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);
        }
Example #2
0
        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"));
        }