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())); }
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)); }
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)); }
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 }
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)) ); }
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)) ); }
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)); }