static void Main(string[] args)
        {
            do
            {
                double totalHoursWorked = GetTotalHoursWorked();

                double hourlyRate = GetHourlyRate();

                string location = GetLocation();

                var calculatorType = GetCalculatorType(location);
                var calculator     = new EmployeeSalaryCalculator(calculatorType);

                var employee = new Employee
                {
                    HoursWorked = totalHoursWorked,
                    HourlyRate  = hourlyRate,
                    Location    = location
                };

                employee.Salary = calculator.CalculateSalary(employee);

                PrintResults(employee);

                Console.WriteLine("Do you want to continue? (y/n)");
            } while (Console.ReadLine() != "n");
        }
Beispiel #2
0
        public void SocialSecurityShouldBeProperlyDeductedForItalyEmployees()
        {
            var employee = new Employee {
                HourlyRate = 1, HoursWorked = 1, Location = "italy"
            };
            var salaryCalculator = new EmployeeSalaryCalculator(new ItalaySalaryCalculator());
            var salary           = salaryCalculator.CalculateSalary(employee);

            Assert.AreEqual(salary.Deduction.SocialSecurityContribution, 0.0919);
        }
Beispiel #3
0
        public void IncomeTaxShouldBeProperlyDeductedForItalyEmployees()
        {
            var employee = new Employee {
                HourlyRate = 1, HoursWorked = 1, Location = "italy"
            };
            var salaryCalculator = new EmployeeSalaryCalculator(new ItalaySalaryCalculator());
            var salary           = salaryCalculator.CalculateSalary(employee);

            Assert.AreEqual(salary.Deduction.IncomeTax, 0.25);
        }
Beispiel #4
0
        public void CompulsoryPensionShouldBeProperlyDeductedForIrelandEmployees()
        {
            var employee = new Employee {
                HourlyRate = 1, HoursWorked = 1, Location = "ireland"
            };
            var salaryCalculator = new EmployeeSalaryCalculator(new IrelandSalaryCalculator());
            var salary           = salaryCalculator.CalculateSalary(employee);

            Assert.AreEqual(salary.Deduction.Pension, 0.04);
        }
Beispiel #5
0
        public void UniversalChargeShouldBeProperlyDeductedForIrelandEmployeesWhenSalaryIsMore()
        {
            var employee = new Employee {
                HourlyRate = 100, HoursWorked = 10, Location = "ireland"
            };
            var salaryCalculator = new EmployeeSalaryCalculator(new IrelandSalaryCalculator());
            var salary           = salaryCalculator.CalculateSalary(employee);

            Assert.AreEqual(salary.Deduction.UniversalSocialCharge, 75);
        }
Beispiel #6
0
        public void PensionShouldBeProperlyDeductedForGermanyEmployees()
        {
            var employee = new Employee {
                HourlyRate = 1, HoursWorked = 1, Location = "germany"
            };
            var salaryCalculator = new EmployeeSalaryCalculator(new GermanySalaryCalculator());
            var salary           = salaryCalculator.CalculateSalary(employee);

            Assert.AreEqual(salary.Deduction.Pension, 0.02);
        }
Beispiel #7
0
        public void IncomeTaxShouldBeProperlyDeductedForGermanyEmployeesIfSalaryIsMore()
        {
            var employee = new Employee {
                HourlyRate = 100, HoursWorked = 10, Location = "germany"
            };
            var salaryCalculator = new EmployeeSalaryCalculator(new GermanySalaryCalculator());
            var salary           = salaryCalculator.CalculateSalary(employee);

            Assert.AreEqual(salary.Deduction.IncomeTax, 292);
        }
Beispiel #8
0
        public void SalaryShouldBeProperlyCalculatedForIrelandEmployees()
        {
            var employee = new Employee {
                HourlyRate = 10, HoursWorked = 1, Location = "ireland"
            };
            var salaryCalculator = new EmployeeSalaryCalculator(new IrelandSalaryCalculator());
            var salary           = salaryCalculator.CalculateSalary(employee);

            Assert.AreEqual(salary.GrossSalary, 10);
        }