Пример #1
0
        public void ShouldCalculateEstimateNumberOfRaceLapsFor20Minutes()
        {
            var r = FuelStrategy.Calculate(raceDuration: 20.Minutes(), averageFuelBurnPerLap: 0f, averageLapTime: 60.Seconds(), fuelTankCapacity: 30);

            Assert.That(r.EstimatedNumberOfRaceLaps, Is.EqualTo(21));

            r = FuelStrategy.Calculate(raceDuration: 20.Minutes(), averageFuelBurnPerLap: 0f, averageLapTime: 55.Seconds(), fuelTankCapacity: 30);
            Assert.That(r.EstimatedNumberOfRaceLaps, Is.EqualTo(22));
        }
        public void ShouldCalculateRemainingFor20Litres()
        {
            var r = FuelStrategy.CalculateRemainingLapsForFuel(20, 2f, 60.Seconds());

            Assert.That(r.EstimateLapsRemaining, Is.EqualTo(10));
            Assert.That(r.EstimateTimeRemaining, Is.EqualTo(600.Seconds()));

            r = FuelStrategy.CalculateRemainingLapsForFuel(20, 1.35f, 60.Seconds());
            Assert.That(r.EstimateLapsRemaining, Is.EqualTo(14));
            Assert.That(r.EstimateTimeRemaining, Is.EqualTo((14 * 60).Seconds()));
        }
Пример #3
0
        public void ShouldCalculateTotalFuelRequiredForRaceDuration()
        {
            var r = FuelStrategy.Calculate(raceDuration: 20.Minutes(), averageFuelBurnPerLap: 1f, averageLapTime: 60.Seconds(), fuelTankCapacity: 30);

            Assert.That(r.TotalFuelRequired, Is.EqualTo(25)); //( 21+1)*1 =>21 then to nearest 5

            r = FuelStrategy.Calculate(raceDuration: 20.Minutes(), averageFuelBurnPerLap: 1.9f, averageLapTime: 60.Seconds(), fuelTankCapacity: 30);
            Assert.That(r.TotalFuelRequired, Is.EqualTo(45)); //( 21+1)*1.9 =>39 then to nearest 5

            r = FuelStrategy.Calculate(raceDuration: 40.Minutes(), averageFuelBurnPerLap: 1.9f, averageLapTime: 60.Seconds(), fuelTankCapacity: 30);
            Assert.That(r.TotalFuelRequired, Is.EqualTo(85));
        }
Пример #4
0
        public void ShouldCalculateNumerOfPitsStopsForA20LapRace()
        {
            var r = FuelStrategy.Calculate(numberOfRaceLaps: 20, averageFuelBurnPerLap: 2d, fuelTankCapacity: 30);

            Assert.That(r.NumberOfPitStops, Is.EqualTo(1));

            r = FuelStrategy.Calculate(numberOfRaceLaps: 20, averageFuelBurnPerLap: 0.9d, fuelTankCapacity: 10);
            Assert.That(r.TotalFuelRequired, Is.EqualTo(20)); //( 20+1)*0.9 => then to nearest 5
            Assert.That(r.NumberOfPitStops, Is.EqualTo(2));

            r = FuelStrategy.Calculate(numberOfRaceLaps: 20, averageFuelBurnPerLap: 0.9d, fuelTankCapacity: 100);
            Assert.That(r.NumberOfPitStops, Is.EqualTo(0));
        }
Пример #5
0
        public void ShouldCalculateNumerOfPitsStopsForARaceDuration()
        {
            var r = FuelStrategy.Calculate(raceDuration: 20.Minutes(), averageFuelBurnPerLap: 1f, averageLapTime: 60.Seconds(), fuelTankCapacity: 30);

            Assert.That(r.NumberOfPitStops, Is.EqualTo(0)); //Total fuel 25L => 0 Stop

            r = FuelStrategy.Calculate(raceDuration: 20.Minutes(), averageFuelBurnPerLap: 1f, averageLapTime: 60.Seconds(), fuelTankCapacity: 25);
            Assert.That(r.NumberOfPitStops, Is.EqualTo(0)); //Total fuel 25L => 0 Stop

            r = FuelStrategy.Calculate(raceDuration: 20.Minutes(), averageFuelBurnPerLap: 1.9f, averageLapTime: 60.Seconds(), fuelTankCapacity: 30);
            Assert.That(r.NumberOfPitStops, Is.EqualTo(1)); //Total fuel 45L => 1 Stop

            r = FuelStrategy.Calculate(raceDuration: 40.Minutes(), averageFuelBurnPerLap: 1.9f, averageLapTime: 60.Seconds(), fuelTankCapacity: 30);
            Assert.That(r.NumberOfPitStops, Is.EqualTo(3)); //Total fuel 85L => 2 Stop (refill => 30 - 1.9*2 => 26.2 => 85/26.2
        }
Пример #6
0
        public void ShouldCalculateForRaceRemaining_WhenPitWindowOpen()
        {
            var r = FuelStrategy.CalculateToFinish(
                fuelLevel: 5,
                remainingTime: 24.Minutes(),
                raceDuration: 60.Minutes(),
                averageFuelBurnPerLap: 1f,
                averageLapTime: 60.Seconds(),
                fuelTankCapacity: 30
                );

            Assert.That(r, Is.EqualTo(new RaceCompletionRequirements(
                                          numberOfPitStops: 1,
                                          totalFuelRequired: 25,
                                          totalFuelRequiredAtNextStop: 25,
                                          pitWindowOpened: true,
                                          lapsToPitWindow: 0,
                                          estimateLapsRemaining: 25))
                        );
        }
Пример #7
0
        public void ShouldCalculateForRaceRemaining_WhenTwoStopRequired()
        {
            var r = FuelStrategy.CalculateToFinish(
                fuelLevel: 15,
                remainingTime: 90.Minutes(),
                raceDuration: 120.Minutes(),
                averageFuelBurnPerLap: 1f,
                averageLapTime: 60.Seconds(),
                fuelTankCapacity: 30
                );

            Assert.That(r, Is.EqualTo(new RaceCompletionRequirements(
                                          numberOfPitStops: 3,
                                          totalFuelRequired: 90 - 15 + 5,
                                          totalFuelRequiredAtNextStop: 30,
                                          pitWindowOpened: false,
                                          lapsToPitWindow: 13,
                                          estimateLapsRemaining: 91))
                        );
        }
Пример #8
0
        public void ShouldCalculateTotalFuelRequiredFor20Laps()
        {
            var r = FuelStrategy.Calculate(numberOfRaceLaps: 20, averageFuelBurnPerLap: 1.9d, fuelTankCapacity: 1);

            Assert.That(r.TotalFuelRequired, Is.EqualTo(45)); //( 20+1)*1.9 => 39.9 => 40 => then to nearest 5

            r = FuelStrategy.Calculate(numberOfRaceLaps: 20, averageFuelBurnPerLap: 0.9d, fuelTankCapacity: 10);
            Assert.That(r.TotalFuelRequired, Is.EqualTo(20)); //( 20+1)*0.9 => then to nearest 5

            r = FuelStrategy.Calculate(numberOfRaceLaps: 20, averageFuelBurnPerLap: 2.4d, fuelTankCapacity: 1);
            Assert.That(r.TotalFuelRequired, Is.EqualTo(55)); //( 20+1)*2.4 => 50.4 => 51 then to nearest 5

            r = FuelStrategy.Calculate(numberOfRaceLaps: 20, averageFuelBurnPerLap: 2.380952380952381d, fuelTankCapacity: 1);
            Assert.That(r.TotalFuelRequired, Is.EqualTo(55)); //( 20+1)*2.38...  => 50.0 then to nearest 5

            r = FuelStrategy.Calculate(numberOfRaceLaps: 20, averageFuelBurnPerLap: 2.333333333333333, fuelTankCapacity: 1);
            Assert.That(r.TotalFuelRequired, Is.EqualTo(50));

            r = FuelStrategy.Calculate(numberOfRaceLaps: 20, averageFuelBurnPerLap: 2.333333333333334, fuelTankCapacity: 1);
            Assert.That(r.TotalFuelRequired, Is.EqualTo(55));

            r = FuelStrategy.Calculate(numberOfRaceLaps: 20, averageFuelBurnPerLap: 2.380952380952381d, fuelTankCapacity: 1);
            Assert.That(r.TotalFuelRequired, Is.EqualTo(55));
        }