diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs index 97dae974e2652d8f391dc9fb8ecbc5c9d6d6a4e2..cd7af8cb81a9299fe852b0dd4e00df3ba3e2d2ef 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs @@ -218,7 +218,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual int? NumberPassengersStandingUpperDeck => 0; - public virtual CubicMeter CargoVolume => 0.SI<CubicMeter>(); + public virtual CubicMeter CargoVolume => + ElementExists(XMLNames.Vehicle_CargoVolume) + ? GetDouble(XMLNames.Vehicle_CargoVolume).SI<CubicMeter>() : null; public virtual VehicleCode? VehicleCode => VectoCommon.Models.VehicleCode.NOT_APPLICABLE; @@ -1143,10 +1145,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public XMLDeclarationHEVPxHeavyLorryDataProviderV210( IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) - : base(jobData, xmlNode, sourceFile) - { - - } + : base(jobData, xmlNode, sourceFile) { } #region Overrides of XMLDeclarationVehicleDataProviderV10 @@ -1203,4 +1202,25 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider #endregion } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHEVPxMediumLorryDataProviderV210 : XMLDeclarationHEVPxHeavyLorryDataProviderV210 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V210_JOBS; + public new const string XSD_TYPE = "Vehicle_HEV-Px_MediumLorryDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationHEVPxMediumLorryDataProviderV210(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override IPTOTransmissionInputData PTOTransmissionInputData => null; + public override XmlElement PTONode => null; + + #endregion + } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs index 3f785d69f92622bba28dbb03f951f93bb405332d..936290bbbd9354d6d8e2a7c6483b76995a0ac943 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV210InjectModule.cs @@ -24,11 +24,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationHeavyLorryDataProviderV210>() .Named(XMLDeclarationHeavyLorryDataProviderV210.QUALIFIED_XSD_TYPE); - - + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationHEVPxHeavyLorryDataProviderV210>() .Named(XMLDeclarationHEVPxHeavyLorryDataProviderV210.QUALIFIED_XSD_TYPE); + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationHEVPxMediumLorryDataProviderV210>() + .Named(XMLDeclarationHEVPxMediumLorryDataProviderV210.QUALIFIED_XSD_TYPE); Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationCompletedBusComponentsDataProviderV210>() .Named(XMLDeclarationCompletedBusComponentsDataProviderV210.QUALIFIED_XSD_TYPE); diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs index 467472bef8f7ab36c2bc67faaec9ff79955c93dc..2cecac000c8368414d4c5a548810ba9f1032942a 100644 --- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs @@ -157,7 +157,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.IsNotNull(vehicle.Components.AirdragInputData); Assert.IsNull(vehicle.Components.ElectricStorage); Assert.IsNotNull(vehicle.Components.PTOTransmissionInputData); - Assert.AreEqual(0.SI<CubicMeter>() , vehicle.CargoVolume); + Assert.IsNull(vehicle.CargoVolume); Assert.IsNotNull(vehicle.TorqueLimits); Assert.IsNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits Assert.IsNull(vehicle.MaxPropulsionTorque);//Vehicle Max Prop. Limits @@ -189,7 +189,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.IsNotNull(vehicle.Components.AirdragInputData); Assert.IsNull(vehicle.Components.ElectricStorage); Assert.IsNull(vehicle.Components.PTOTransmissionInputData); - Assert.AreNotEqual(0.SI<CubicMeter>(), vehicle.CargoVolume); + Assert.AreEqual(20.300.SI<CubicMeter>(), vehicle.CargoVolume); Assert.IsNotNull(vehicle.TorqueLimits); Assert.IsNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits Assert.IsNull(vehicle.MaxPropulsionTorque);//Vehicle Max Prop. Limit @@ -221,7 +221,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.IsNull(vehicle.Components.AirdragInputData); Assert.IsNull(vehicle.Components.ElectricStorage); Assert.IsNull(vehicle.Components.PTOTransmissionInputData); - Assert.AreEqual(0.SI<CubicMeter>(), vehicle.CargoVolume); + Assert.IsNull(vehicle.CargoVolume); Assert.IsNotNull(vehicle.TorqueLimits); Assert.IsNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits Assert.IsNull(vehicle.MaxPropulsionTorque);//Vehicle Max Prop. Limit @@ -258,7 +258,7 @@ namespace TUGraz.VectoCore.Tests.XML TestElectricStorageElements(vehicle.Components.ElectricStorage.ElectricStorageElements); Assert.IsNotNull(vehicle.Components.PTOTransmissionInputData); - Assert.AreEqual(0.SI<CubicMeter>(), vehicle.CargoVolume); + Assert.IsNull(vehicle.CargoVolume); Assert.IsNotNull(vehicle.TorqueLimits); TestElectricMotorTorqueLimits(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits TestBoostingLimitations(vehicle.MaxPropulsionTorque);//Vehicle Max Prop. Limit @@ -513,7 +513,40 @@ namespace TUGraz.VectoCore.Tests.XML } #endregion + + [TestCase(@"MediumLorry\HEV_mediumLorry_AMT_Px.xml")] + public void TestHEVMediumLorry(string jobfile) + { + var filename = Path.Combine(BASE_DIR, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider); + Assert.NotNull(dataProvider.JobInputData); + + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.IsNotNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + Assert.IsNotNull(vehicle.Components.AngledriveInputData);//optional + Assert.IsNotNull(vehicle.Components.RetarderInputData);//optional + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.AreEqual(20.300.SI<CubicMeter>(), vehicle.CargoVolume); + Assert.IsNotNull(vehicle.TorqueLimits); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + Assert.IsNotNull(vehicle.MaxPropulsionTorque);//Vehicle Max Prop. Limit + } + + #region Test existence of torque converter private void TestTorqueConverter(IVehicleDeclarationInputData vehicle)