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);
        }
示例#3
0
        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);
        }