public void Construct(AVehicleBuilder vehicleBuilder) { vehicleBuilder.BuildFrame(); vehicleBuilder.BuildEngine(); vehicleBuilder.BuildWheels(); vehicleBuilder.BuildDoors(); }
public void SucceedToAddNewVehicleWhenRallyHasNotStarted() { var rally = new Rally(2019, 2); var vehicle = AVehicleBuilder.BuildProperlyWorkingVehicle(); var operationResult = rally.AddVehicle(vehicle); Assert.True(operationResult.IsSuccess); Assert.True(rally.Vehicles.Count == 1); }
public void FailToAddAlreadyAddedVehicleWhenRallyHasNotStarted() { var rally = new Rally(2019, 2); var vehicle = AVehicleBuilder.BuildProperlyWorkingVehicle(); rally.AddVehicle(vehicle); var operationResult = rally.AddVehicle(vehicle); Assert.False(operationResult.IsSuccess); }
public void VehicleCannotStartRallyTwice() { var rally = BuildRally(2); var vehicle = AVehicleBuilder.BuildProperlyWorkingVehicle(); vehicle.StartRally(rally); Action startingRallySecondTime = () => vehicle.StartRally(rally); Assert.Throws <InvalidOperationException>(startingRallySecondTime); }
public async Task BeAbleToCaptureRepairingStatus() { var rally = BuildRally(2); var vehicle = AVehicleBuilder.BuildLightlyMalfunctioningVehicleWithLongRapairmentDuration(); vehicle.StartRally(rally); await Task.Delay(TimeSpan.FromSeconds(5)); var vehicleStatistics = vehicle.GetStatistics(); Assert.Equal(VehicleStatus.Repairing, vehicleStatistics.Status); }
public async Task IncludeAllMalfunctioningInStatistics() { var rally = BuildRally(2); var vehicle = AVehicleBuilder.BuildVehicleWhichLightlyMalfunctionsInBeginning(); vehicle.StartRally(rally); await Task.Delay(TimeSpan.FromSeconds(30)); var vehicleStatistics = vehicle.GetStatistics(); Assert.Equal(2, vehicleStatistics.Malfunctions.Count); }
public async Task NotPassFinishLineIfHeavilyMalfunctioning() { var rally = BuildRally(2); var vehicle = AVehicleBuilder.BuildHeavilyMalfunctioningVehicle(); vehicle.StartRally(rally); await Task.Delay(TimeSpan.FromSeconds(30)); var vehicleStatistics = vehicle.GetStatistics(); Assert.Equal(VehicleStatus.Broken, vehicleStatistics.Status); Assert.Null(vehicleStatistics.FinishTime); Assert.True(rally.Distance > vehicleStatistics.DistanceFromStart); }
public async Task PassFinishLineIfWorkingProperly() { var rally = BuildRally(2); var vehicle = AVehicleBuilder.BuildProperlyWorkingVehicle(); vehicle.StartRally(rally); await Task.Delay(TimeSpan.FromSeconds(30)); var vehicleStatistics = vehicle.GetStatistics(); Assert.Equal(VehicleStatus.Finished, vehicleStatistics.Status); Assert.NotNull(vehicleStatistics.FinishTime); Assert.True(rally.Distance <= vehicleStatistics.DistanceFromStart); }