public int ProcessCustomer(Customer customer)
        {
            if (customer.Type == CustomerType.Personal)
            {
                ITaxCalculator personalTaxCalculator = new PersonalTaxCalculator();
                return(personalTaxCalculator.CalculateTax(customer.Money));
            }

            ITaxCalculator linearTaxCalculator = new LinearTaxCalculator();

            return(linearTaxCalculator.CalculateTax(customer.Money));
        }
Example #2
0
        public void T002_CalculatePersonalTax()
        {
            // Given
            int receivedMoney = 20000;
            int taxCredit     = 8000;

            // Expected
            int expectedTax = (int)((receivedMoney - taxCredit) * 0.18);

            // When
            int actualTax = new PersonalTaxCalculator().CalculateTax(receivedMoney);

            // Then
            Assert.AreEqual(expectedTax, actualTax);
        }
        public int ProcessCustomers(List <Customer> customers)
        {
            ITaxCalculator personalTaxCalculator = new PersonalTaxCalculator();
            ITaxCalculator linearTaxCalculator   = new LinearTaxCalculator();
            int            linear   = 0;
            int            personal = 0;

            foreach (var customer in customers)
            {
                if (customer.Type == CustomerType.Personal)
                {
                    personal += personalTaxCalculator.CalculateTax(customer.Money);
                }
                else
                {
                    linear += linearTaxCalculator.CalculateTax(customer.Money);
                }
            }

            return(linear + personal);
        }