public void If_Input_in_Validate_Toll_Has_Length_of_one_and_TollFree_is_false_Fee_should_be_correct()
        {
            //Arrange
            var sut   = new CalculateTollFees();
            var fee   = CalculateTollFees.Price.MaxFee;
            var input = new DateTime[]
            {
                new DateTime(2020, 4, 1).AddHours(7).AddMinutes(31),
            };
            //Act
            var actual = sut.ValidateToll(input);

            //Assert
            sut.dailyFee.Should().Be((int)fee);
        }
        public void If_TollFree_is_false_CalculateTimeBetweenTollStops_should_calculate_correct_differnce_inMinutes()
        {
            //Arrange
            var sut   = new CalculateTollFees();
            var input = new DateTime[]
            {
                new DateTime(2020, 4, 1).AddHours(6).AddMinutes(59),
                new DateTime(2020, 4, 1).AddHours(7).AddMinutes(59),
            };
            //Act
            var actual = sut.ValidateToll(input);

            //Assert
            sut._minutesBetweenTollStops.Should().Be(60);
        }
        public void If__minutesBetweenTollStops_is_less_than_LimitToJustPayOneTollFee__fee_should_be_correct()
        {
            //Arrange
            var sut   = new CalculateTollFees();
            var fee   = CalculateTollFees.Price.MinFee;
            var input = new DateTime[]
            {
                new DateTime(2020, 4, 1).AddHours(8).AddMinutes(31),
                new DateTime(2020, 4, 1).AddHours(8).AddMinutes(59),
            };
            //Act
            var actual = sut.ValidateToll(input);

            //Assert
            sut.dailyFee.Should().Be((int)fee);
        }
        public void If_TollFree_is_valid___fee_should_be_null()
        {
            //Arrange
            var sut   = new CalculateTollFees();
            var input = new DateTime[]
            {
                new DateTime(2020, 7, 10),
                new DateTime(2020, 4, 1).AddHours(5).AddMinutes(59),
                new DateTime(2020, 3, 1).AddHours(18).AddMinutes(31),
                new DateTime(2020, 3, 7).AddHours(6).AddMinutes(15),
                new DateTime(2020, 3, 6).AddHours(6).AddMinutes(15)
            };

            //Act
            sut.ValidateToll(input);
            //Assert
            sut.totalFee.Should().Be(0);
        }
        public void If__fee_is_equal_or_greater_than_Max_Amount__fee_should_be_equal_to_max_amount()
        {
            //Arrange
            var sut   = new CalculateTollFees();
            var input = new DateTime[]
            {
                new DateTime(2020, 4, 1).AddHours(7).AddMinutes(31),
                new DateTime(2020, 4, 1).AddHours(8).AddMinutes(31),
                new DateTime(2020, 4, 1).AddHours(9).AddMinutes(31),
                new DateTime(2020, 4, 1).AddHours(10).AddMinutes(31),
                new DateTime(2020, 4, 1).AddHours(11).AddMinutes(31),
                new DateTime(2020, 4, 1).AddHours(12).AddMinutes(31),
                new DateTime(2020, 4, 1).AddHours(13).AddMinutes(31),
                new DateTime(2020, 4, 1).AddHours(14).AddMinutes(31),
                new DateTime(2020, 4, 1).AddHours(15).AddMinutes(31),
                new DateTime(2020, 4, 1).AddHours(16).AddMinutes(31),
                new DateTime(2020, 4, 1).AddHours(17).AddMinutes(31),
            };
            //Act
            var actual = sut.ValidateToll(input);

            //Assert
            sut.dailyFee.Should().Be(CalculateTollFees.MaxDailyTollFeeAmount);
        }