/// <summary> /// Initializes a new instance of the <see cref="VehicleSubtypeSpeed"/> class. /// </summary> /// <param name="vehicleSubtype">The vehicle subtype.</param> /// <param name="speedInKilometersPerHour">The speed.</param> public VehicleSubtypeSpeed(VehicleSubtype vehicleSubtype, SpeedInKilometersPerHour speedInKilometersPerHour) : base((int)vehicleSubtype) { Ensure.NotNull(speedInKilometersPerHour, "The speed is required.", nameof(speedInKilometersPerHour)); SpeedInKilometersPerHour = speedInKilometersPerHour; }
/// <summary> /// Initializes a new instance of the <see cref="VehicleSubtypeMalfunctionProbability"/> class. /// </summary> /// <param name="vehicleSubtype">The vehicle subtype.</param> /// <param name="lightMalfunctionProbability">The light malfunction probability.</param> /// <param name="heavyMalfunctionProbability">The heavy malfunction probability.</param> public VehicleSubtypeMalfunctionProbability( VehicleSubtype vehicleSubtype, MalfunctionProbability lightMalfunctionProbability, MalfunctionProbability heavyMalfunctionProbability) : base((int)vehicleSubtype) { Ensure.NotNull( lightMalfunctionProbability, "The light malfunction probability is required.", nameof(lightMalfunctionProbability)); Ensure.NotNull( heavyMalfunctionProbability, "The heavy malfunction probability is required.", nameof(heavyMalfunctionProbability)); LightMalfunctionProbability = lightMalfunctionProbability; HeavyMalfunctionProbability = heavyMalfunctionProbability; }
/// <summary> /// Initializes a new instance of the <see cref="Vehicle"/> class. /// </summary> /// <param name="race">The race.</param> /// <param name="teamName">The team name.</param> /// <param name="modelName">The model name.</param> /// <param name="manufacturingDate">The manufacturing date.</param> /// <param name="vehicleSubtype">The vehicle subtype.</param> public Vehicle( Race race, TeamName teamName, ModelName modelName, DateTime manufacturingDate, VehicleSubtype vehicleSubtype) { Ensure.NotNull(race, "The race is required.", nameof(race)); Ensure.NotNull(teamName, "The team name is required.", nameof(teamName)); Ensure.NotNull(modelName, "The model name is required.", nameof(modelName)); Ensure.NotEmpty(manufacturingDate, "The manufacturing date is required", nameof(manufacturingDate)); RaceId = race.Id; TeamName = teamName; ModelName = modelName; ManufacturingDate = manufacturingDate.Date; VehicleType = DetermineVehicleType(vehicleSubtype); VehicleSubtype = vehicleSubtype; Status = VehicleStatus.Pending; Distance = LengthInKilometers.Zero; }