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 NotFinishWhenSomeVehicleNeverFinishes()
        {
            var rally = new Rally(2019, 2);

            rally.AddVehicle(new VehicleThatImmediatelyFinishes("Id1"));
            rally.AddVehicle(new VehicleThatNeverFinishes("Id2"));

            rally.Start();

            Assert.False(rally.IsFinished);
        }
        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 FinishWhenAllVehiclesFinish()
        {
            var rally   = new Rally(2019, 2);
            var vehicle = new VehicleThatImmediatelyFinishes("Id1");

            rally.AddVehicle(vehicle);

            rally.Start();

            Assert.True(rally.IsFinished);
        }
        public void SucceedToStartWhenItHasNotBeenStartedYetAndHasVehicles()
        {
            var rally   = new Rally(2019, 2);
            var vehicle = new VehicleThatImmediatelyFinishes("Id1");

            rally.AddVehicle(vehicle);

            var operationResult = rally.Start();

            Assert.True(operationResult.IsSuccess);
        }