Exemple #1
0
        public void InputAnnualSalary(PayDetails payDetails)
        {
            try {
                System.Console.WriteLine("Please enter your annual salary:");
                string inputSalary;
                var    promptUserFormat = false;
                do
                {
                    inputSalary      = System.Console.ReadLine();
                    promptUserFormat = !payDetails.TrySetAnnualSalary(inputSalary);
                    if (promptUserFormat)
                    {
                        System.Console.WriteLine("Wrong format, the annual salary should be numbers only, please re-enter your annual salary:");
                    }
                    else
                    {
                        System.Console.WriteLine("You entered annual salary: " + payDetails.AnnualSalary);
                    }
                } while (promptUserFormat);

                /*  while (regexSalary.IsMatch(inputSalary) == false){
                 *  Console.WriteLine("Wrong format, the annual salary should be numbers only, please re-enter your annual salary:");
                 *  inputSalary = Console.ReadLine();
                 * }*/
                payDetails.calcIncomeTax();
            }
            catch (Exception e) {
                throw e;
            }
        }
        public PayDetailsRequest.PayDetailsResponse CalculateTax(PayDetailsRequest request)
        {
            PayDetails payDetails = new PayDetails()
            {
                FirstName    = request.FirstName,
                SurName      = request.SurName,
                PayStartDate = request.PayStartDate,
                PayEndDate   = request.PayEndDate
            };
            bool isValueValid = payDetails.TrySetSuperRate(request.SuperRate) && payDetails.TrySetAnnualSalary(request.AnnualSalary);

            if (isValueValid)
            {
                return(new PayDetailsRequest.PayDetailsResponse(
                           payDetails.PayPeriod,
                           payDetails.FullName,
                           payDetails.GrossIncome,
                           payDetails.IncomeTax,
                           payDetails.NetIncome,
                           payDetails.Super,
                           200));
            }
            // do we reject ?  throw exception ? throw new exception

            /*TODO: map the methods in the payDetail object*/

            // fill out response object from paydetails

            return(new PayDetailsRequest.PayDetailsResponse(422, "Invalid input values"));
        }
Exemple #3
0
        public void IncomeTax_ShouldPositiveIfNegative()
        {
            var salary     = -40000;
            var super      = 9.5;
            var payDetails = new PayDetails();

            payDetails.TrySetAnnualSalary(salary.ToString());
            payDetails.calcIncomeTax();
            payDetails.TrySetSuperRate(super.ToString());
            Assert.AreEqual(3333, payDetails.GrossIncome);
            Assert.AreEqual(379, payDetails.IncomeTax);
            Assert.AreEqual(2954, payDetails.NetIncome);
            Assert.AreEqual(316, payDetails.Super);
        }
Exemple #4
0
        public void IncomeTax_ShouldFallIntoFifthBracket()
        {
            var salary     = 200000;
            var super      = 9.5;
            var payDetails = new PayDetails();

            payDetails.TrySetAnnualSalary(salary.ToString());
            payDetails.calcIncomeTax();
            payDetails.TrySetSuperRate(super.ToString());
            Assert.AreEqual(16666, payDetails.GrossIncome);
            Assert.AreEqual(5270, payDetails.IncomeTax);
            Assert.AreEqual(11396, payDetails.NetIncome);
            Assert.AreEqual(1583, payDetails.Super);
        }
Exemple #5
0
        public void IncomeTax_ShouldFallIntoSecondBracket()
        {
            var salary     = 23000;
            var super      = 9.5;
            var payDetails = new PayDetails();

            payDetails.TrySetAnnualSalary(salary.ToString());
            payDetails.calcIncomeTax();
            payDetails.TrySetSuperRate(super.ToString());
            Assert.AreEqual(1916, payDetails.GrossIncome);
            Assert.AreEqual(76, payDetails.IncomeTax);
            Assert.AreEqual(1840, payDetails.NetIncome);
            Assert.AreEqual(182, payDetails.Super);
        }
Exemple #6
0
        public void IncomeTax_ShouldFallInTheMiddleBracket_IfSalaryExactlyEqualsBracketMinimum()
        {
            var salary     = 87000.5;
            var super      = 9.5;
            var payDetails = new PayDetails();

            payDetails.TrySetAnnualSalary(salary.ToString());
            payDetails.calcIncomeTax();
            payDetails.TrySetSuperRate(super.ToString());
            Assert.AreEqual(7250, payDetails.GrossIncome);
            Assert.AreEqual(1652, payDetails.IncomeTax);
            Assert.AreEqual(5598, payDetails.NetIncome);
            Assert.AreEqual(688, payDetails.Super);
        }
Exemple #7
0
        [Test] public void IncomeTax_ShouldFallInTheLastBracket_IfSalaryExactlyEqualsBracketMinimum()
        {
            var salary     = 180000.5;
            var super      = 9.5;
            var payDetails = new PayDetails();

            payDetails.TrySetAnnualSalary(salary.ToString());
            payDetails.calcIncomeTax();
            payDetails.TrySetSuperRate(super.ToString());
            Assert.AreEqual(15000, payDetails.GrossIncome);
            Assert.AreEqual(4520, payDetails.IncomeTax);
            Assert.AreEqual(10480, payDetails.NetIncome);
            Assert.AreEqual(1425, payDetails.Super);
        }
Exemple #8
0
        public void IncomeTax_ShouldFallIntoFirstBracket()
        {
            var salary     = 17000;
            var super      = 9;
            var payDetails = new PayDetails();

            payDetails.TrySetAnnualSalary(salary.ToString());
            payDetails.calcIncomeTax();
            payDetails.TrySetSuperRate(super.ToString());
            Assert.AreEqual(1416, payDetails.GrossIncome);
            Assert.AreEqual(0, payDetails.IncomeTax);
            Assert.AreEqual(1416, payDetails.NetIncome);
            Assert.AreEqual(127, payDetails.Super);
        }
Exemple #9
0
        public void IncomeTax_SuperRateShouldBePositiveIfNegative()
        {
            var salary     = 50000;
            var super      = -9.5;
            var payDetails = new PayDetails();

            payDetails.TrySetAnnualSalary(salary.ToString());
            payDetails.calcIncomeTax();
            payDetails.TrySetSuperRate(super.ToString());
            Assert.AreEqual(4166, payDetails.GrossIncome);
            Assert.AreEqual(650, payDetails.IncomeTax);
            Assert.AreEqual(3516, payDetails.NetIncome);
            Assert.AreEqual(395, payDetails.Super);
        }
Exemple #10
0
        public void IncomeTax_ShouldBeZeroIfZero()
        {
            var salary     = 0;
            var super      = 9.5;
            var payDetails = new PayDetails();

            payDetails.TrySetAnnualSalary(salary.ToString());
            payDetails.calcIncomeTax();
            payDetails.TrySetSuperRate(super.ToString());
            Assert.AreEqual(0, payDetails.GrossIncome);
            Assert.AreEqual(0, payDetails.IncomeTax);
            Assert.AreEqual(0, payDetails.NetIncome);
            Assert.AreEqual(0, payDetails.Super);
        }