public void Give_Pay_to_a_list_of_employees_works() { var fixedCalc = new FixedPayCalculator(); fixedCalc.MonthlySalary = 1500; var hourlyCalc = new HourlyPayCalculator(); hourlyCalc.HourlySalary = 20; hourlyCalc.AddWorkedHours(new DateTime(2018, 1, 15), 8); hourlyCalc.AddWorkedHours(new DateTime(2018, 1, 16), 9); var commissionCalc = new CommissionPayCalculator(); commissionCalc.CommissionPercentage = (decimal)0.02; commissionCalc.AddCommission(new DateTime(2018, 1, 20), 10000); commissionCalc.AddCommission(new DateTime(2018, 1, 29), 20000); var noFamilyCalc = new NoFamilyBonusCalculator(); var bigFamilyCalc = new BigFamilyBonusCalculator(); var list = new List <Employee> { new Employee { PayCalculator = fixedCalc, BonusCalculator = noFamilyCalc }, new Employee { PayCalculator = hourlyCalc, BonusCalculator = noFamilyCalc }, new Employee { PayCalculator = commissionCalc, BonusCalculator = bigFamilyCalc }, }; foreach (var e in list) { e.AddSalary(2018, 1); } list[1].PayCalculator = fixedCalc; list[2].PayCalculator = fixedCalc; foreach (var e in list) { e.AddSalary(2018, 2); } }
public void Hourly_CalculatePay() { var c = new HourlyPayCalculator(); c.HourlySalary = 20; Assert.AreEqual(0, c.CalculatePay(2018, 1)); c.AddWorkedHours(new DateTime(2018, 1, 29), 4); Assert.AreEqual(80, c.CalculatePay(2018, 1)); c.AddWorkedHours(new DateTime(2018, 1, 30), 10); Assert.AreEqual(300, c.CalculatePay(2018, 1), "only January hours"); c.AddWorkedHours(new DateTime(2017, 12, 23), 6); Assert.AreEqual(300, c.CalculatePay(2018, 1), "added non-January hours"); c.AddWorkedHours(new DateTime(2018, 1, 29), 3); Assert.AreEqual(360, c.CalculatePay(2018, 1)); }
private List <Employee> createEmployees() { var fixedCalc = new FixedPayCalculator(); fixedCalc.MonthlySalary = 1500; var hourlyCalc = new HourlyPayCalculator(); hourlyCalc.HourlySalary = 20; hourlyCalc.AddWorkedHours(new DateTime(2018, 1, 15), 8); hourlyCalc.AddWorkedHours(new DateTime(2018, 1, 16), 9); var commissionCalc = new CommissionPayCalculator(); commissionCalc.CommissionPercentage = (decimal)0.02; commissionCalc.AddCommission(new DateTime(2018, 1, 20), 10000); commissionCalc.AddCommission(new DateTime(2018, 1, 29), 20000); var list = new List <Employee> { new Employee { Name = "Mario Rossi", PayCalculator = fixedCalc, BonusCalculator = new BigFamilyBonusCalculator() }, new Employee { Name = "Tonio Cartonio", PayCalculator = hourlyCalc, BonusCalculator = new LittleFamilyBonusCalculator() }, new Employee { Name = "Gigi Pirola", PayCalculator = commissionCalc, BonusCalculator = new NoFamilyBonusCalculator() }, }; return(list); }