Example #1
0
        public void Fixed_CalculatePay()
        {
            var c = new FixedPayCalculator();

            c.MonthlySalary = 1500;

            var pay = c.CalculatePay(2018, 1);

            Assert.AreEqual(1500, pay);
        }
Example #2
0
        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);
            }
        }
Example #3
0
        public void Employee_AddSalary_cumulates_salaries()
        {
            var c = new FixedPayCalculator();

            c.MonthlySalary = 1000;

            var e = new Employee();

            e.PayCalculator = c;

            Assert.AreEqual(0, e.TotalPay);

            e.AddSalary(2018, 1);
            Assert.AreEqual(1000, e.TotalPay);

            e.AddSalary(2018, 2);
            e.AddSalary(2018, 3);
            Assert.AreEqual(3000, e.TotalPay);
        }
        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);
        }