示例#1
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);
            }
        }
示例#2
0
        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);
        }