protected VehicleThatOperatesOnFuel(string i_NameOfModel, string i_NumberOfLicense, float[] i_WheelsAirPressures, string i_NameOfWheelManufacturer, float i_MaximumWheelAirPressure, VehicleThatOperatesOnFuel.eTypeOfFuel i_TypeOfFuel, float i_RemainingAmountOfFuelInTheTank, float i_CapacityOfTank) : base(i_NameOfModel, i_NumberOfLicense, i_WheelsAirPressures, i_NameOfWheelManufacturer, i_MaximumWheelAirPressure) { validate(i_CapacityOfTank, i_RemainingAmountOfFuelInTheTank); r_TypeOfFuel = i_TypeOfFuel; m_RemainingAmountOfFuelInTheTank = i_RemainingAmountOfFuelInTheTank; r_CapacityOfTank = i_CapacityOfTank; }
protected VehicleThatOperatesOnFuel(TextReader i_TextReader, byte i_NumberOfWheels, float i_MaximumWheelAirPressure) : base(i_TextReader, i_NumberOfWheels, i_MaximumWheelAirPressure) { if (i_TextReader == null) { throw new ArgumentNullException("i_TextReader", "i_TextReader must not be null."); } r_TypeOfFuel = Enum <VehicleThatOperatesOnFuel.eTypeOfFuel> .Parse(i_TextReader.ReadLine()); m_RemainingAmountOfFuelInTheTank = float.Parse(i_TextReader.ReadLine()); r_CapacityOfTank = float.Parse(i_TextReader.ReadLine()); validate(m_RemainingAmountOfFuelInTheTank, r_CapacityOfTank); }
public Garage.eRefuelStatus RefuelVehicleWhoseLicenseNumberIs(string i_NumberOfLicense, VehicleThatOperatesOnFuel.eTypeOfFuel i_TypeOfFuel, float i_AmountOfFuelToFillTheTankInLiters, bool i_ThrowProperExceptionOnError = true) { Garage.eRefuelStatus status; if (i_NumberOfLicense == null) { if (i_ThrowProperExceptionOnError) { throw new ArgumentNullException("i_NumberOfLicense", "i_NumberOfLicense must not be null."); } status = Garage.eRefuelStatus.NumberOfLicenseIsNull; } else if (float.IsNaN(i_AmountOfFuelToFillTheTankInLiters)) { if (i_ThrowProperExceptionOnError) { throw new ArgumentNaNException("i_AmountOfFuelToFillTheTankInLiters"); } status = Garage.eRefuelStatus.AmountOfFuelToAddIsNaN; } else if (float.IsInfinity(i_AmountOfFuelToFillTheTankInLiters)) { if (i_ThrowProperExceptionOnError) { throw new ArgumentInfinityException("i_AmountOfFuelToFillTheTankInLiters"); } status = Garage.eRefuelStatus.AmountOfFuelToAddIsInfinity; } else if (not(m_VehiclesInGarage.ContainsKey(i_NumberOfLicense))) { if (i_ThrowProperExceptionOnError) { throw new TheReferredVehicleByLicenseNumberDoesNotOperateOnFuelException(i_NumberOfLicense, "i_NumberOfLicense"); } status = Garage.eRefuelStatus.TheGarageDoesNotHaveAVehicleWithThisLicenseNumber; } else { C19_Ex03_GarageLogic.Vehicle vehicle = m_VehiclesInGarage[i_NumberOfLicense].ActualVehicle; if (not(vehicle is VehicleThatOperatesOnFuel)) { if (i_ThrowProperExceptionOnError) { throw new TheGarageDoesNotOwnAVehicleWithThisLicenseNumberException(i_NumberOfLicense, "i_NumberOfLicense"); } status = Garage.eRefuelStatus.TheReferredVehicleDoesNotOperateOnFuel; } else { VehicleThatOperatesOnFuel vehicleThatOperatesOnFuel = vehicle as VehicleThatOperatesOnFuel; switch (vehicleThatOperatesOnFuel.Refuel(i_AmountOfFuelToFillTheTankInLiters, i_TypeOfFuel, i_ThrowProperExceptionOnError)) { case VehicleThatOperatesOnFuel.eRefuelStatus.AmountOfFuelToAddIsNaN: status = Garage.eRefuelStatus.AmountOfFuelToAddIsNaN; break; case VehicleThatOperatesOnFuel.eRefuelStatus.AmountOfFuelToAddIsInfinity: status = Garage.eRefuelStatus.AmountOfFuelToAddIsInfinity; break; case VehicleThatOperatesOnFuel.eRefuelStatus.FuelTankOverflow: status = Garage.eRefuelStatus.FuelTankOverflow; break; case VehicleThatOperatesOnFuel.eRefuelStatus.TypesOfFuelsAreIncompatible: status = Garage.eRefuelStatus.TypesOfFuelsAreIncompatible; break; default: case VehicleThatOperatesOnFuel.eRefuelStatus.Success: status = Garage.eRefuelStatus.Success; break; } } } return(status); }