public void TestCalculateSalary_加班2小時_加班頭2小時比例為1點66_薪資應為1132()
        {
            //Scenario: 加班2小時:
            //    上班8小時,時薪100乘以8,加班2小時,加班費100乘以1.66乘以2,薪資應為1132
            //    Given 正常上班一小時薪資為 100
            //    And 加班薪資頭2小時,時薪比例為 1.66
            //    And 上班時間為 "2014/8/30 08:00:00"
            //    And 下班時間為 "2014/8/30 19:00:00"
            //    When 呼叫CalculateSalary方法
            //    Then 薪資計算結果應為 1132

            var target = new SalaryCard();

            target.HourlySalary = 100;

            //新增property
            target.FirstOverTimeRatio = 1.66;
            target.StartTime          = new DateTime(2014, 8, 30, 8, 0, 0);
            target.EndTime            = new DateTime(2014, 8, 30, 19, 0, 0);

            //act
            var actual = target.CalculateSalary();

            //assert
            var expected = 1132;

            Assert.AreEqual(expected, actual);
        }
        public void TestCalculateSalary_加班5小時最多只能申報4小時_加班頭2小時比例為1點66_加班第3與第4小時比例為2_薪資應為1532()
        {
            //Scenario: 加班5小時,加班只能申報4小時
            //    上班8小時,時薪100乘以8,加班前2小時,加班費100乘以1.66乘以2,加班第3小時與第4小時,加班費100乘以2乘以2,薪資應為1532
            //    Given 正常上班一小時薪資為 100
            //    And 加班薪資頭2小時,時薪比例為 1.66
            //    And 加班薪資第3小時開始,時薪比例為 2
            //    And 上班時間為 "2014/8/30 08:00:00"
            //    And 下班時間為 "2014/8/30 22:00:00"
            //    When 呼叫CalculateSalary方法
            //    Then 薪資計算結果應為 1532

            var target = new SalaryCard();

            target.HourlySalary        = 100;
            target.FirstOverTimeRatio  = 1.66;
            target.SecondOverTimeRatio = 2;
            target.StartTime           = new DateTime(2014, 8, 30, 8, 0, 0);
            target.EndTime             = new DateTime(2014, 8, 30, 22, 0, 0);

            //act
            var actual = target.CalculateSalary();

            //assert
            var expected = 1532;

            Assert.AreEqual(expected, actual);
        }
        public void TestCalculateSalary_沒有加班_正常上班8小時_時薪100乘以8_薪資應為800()
        {
            //Scenario: 沒有加班,正常上班8小時,時薪100乘以8,薪資應為800
            //Given 正常上班一小時薪資為 100
            //And 上班時間時間為 "2014/8/30 08:00:00"
            //And 下班時間為 "2014/8/30 17:00:00"
            //When 呼叫CalculateSalary方法
            //Then 薪資計算結果應為 800

            var target = new SalaryCard();

            target.HourlySalary = 100;
            target.StartTime    = new DateTime(2014, 8, 30, 8, 0, 0);
            target.EndTime      = new DateTime(2014, 8, 30, 17, 0, 0);

            //act
            double actual = target.CalculateSalary();

            //assert
            var expected = 800;

            Assert.AreEqual(expected, actual);
        }