public void Calculate_ThirdHour_CorrectRate()
        {
            // ARRANGE
            var endDateTimes = new[] { 2.0, 2.5, 2.9 }.Select(i => StartDate.AddHours(i));

            // ACT
            var responses = endDateTimes.Select(i => SUT.Calculate(new CalculateRequest(StartDate, i))).ToList();

            // ASSERT
            AssertHelpers.AssertCalculateResponses(responses, Enumerable.Repeat(15M, 3).ToList(), ExpectedRateName);
        }
        public void Calculate_ThreePlusHours_CorrectRate()
        {
            // ARRANGE
            var endDateTimes = new[] { 3, 9, 18, 27, 36 }.Select(i => StartDate.AddHours(i));

            // ACT
            var responses = endDateTimes.Select(i => SUT.Calculate(new CalculateRequest(StartDate, i))).ToList();

            // ASSERT
            var expectedPrices = new[] { 20M, 40M, 40M, 40M, 60M }.ToList();

            AssertHelpers.AssertCalculateResponses(responses, expectedPrices, ExpectedRateName);
        }
        public void Calculate_EligibleStartAndEndTimesOnSameDay_CorrectPrice()
        {
            // ARRANGE
            var requests =
                new[]
            {
                new CalculateRequest(inclMinStartDateTime, inclMinStartDateTime.AddMinutes(5)),
            };

            // ACT
            var responses = requests.Select(i => SUT.Calculate(i)).ToList();

            // ASSERT
            AssertHelpers.AssertCalculateResponses(responses, Enumerable.Repeat(10M, 1).ToList(), ExpectedRateName);
        }
        public void Name_EligibleTimesOnWeekdays_CorrectPrice()
        {
            // ARRANGE
            var requests =
                new[]
            {
                new CalculateRequest(EnclMinStartDateTime, ExclMaxEndDateTime.AddMilliseconds(-1)),
                new CalculateRequest(ExclMaxStartDateTime.AddMilliseconds(-1), ExclMaxEndDateTime.AddMilliseconds(-1)),
            };

            // ACT
            var responses = requests.Select(i => SUT.Calculate(i)).ToList();

            // ASSERT
            AssertHelpers.AssertCalculateResponses(responses, Enumerable.Repeat(6.5M, 2).ToList(), ExpectedRateName);
        }