Exemplo n.º 1
0
 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);
        }
Exemplo n.º 4
0
        public void VehicleCannotStartRallyTwice()
        {
            var rally   = BuildRally(2);
            var vehicle = AVehicleBuilder.BuildProperlyWorkingVehicle();

            vehicle.StartRally(rally);
            Action startingRallySecondTime = () => vehicle.StartRally(rally);

            Assert.Throws <InvalidOperationException>(startingRallySecondTime);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }