From 351f2b81a721efc9a055bb58909062dffd3bdfd7 Mon Sep 17 00:00:00 2001 From: "VKMTHD\\franzjosefkober" <franz.josef.kober@ivt.tugraz.at> Date: Thu, 16 Sep 2021 15:16:01 +0200 Subject: [PATCH] added additional test, to test vehicle data of the different vehicle types --- .../XMLDeclarationVehicleDataProvider.cs | 83 ++++++++++++------- .../Conventional_heavyLorry_AMT_n_opt.xml | 2 + VectoCore/VectoCoreTest/VectoCoreTest.csproj | 1 + .../XMLDeclarationInputv210VehicleDataTest.cs | 56 +++++++++++++ 4 files changed, 113 insertions(+), 29 deletions(-) create mode 100644 VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210VehicleDataTest.cs diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs index ae7a18e116..0ce478497a 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs @@ -576,8 +576,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public override IList<ITorqueLimitInputData> TorqueLimits => ElementExists(XMLNames.Vehicle_TorqueLimits) ? base.TorqueLimits : null; - public override VehicleCategory VehicleCategory => VehicleCategoryHelper.Parse(GetString("ChassisConfiguration")); - + public override VehicleCategory VehicleCategory => VehicleCategoryHelper.Parse(GetString(XMLNames.ChassisConfiguration)); + public override LegislativeClass? LegislativeClass => GetString(XMLNames.Vehicle_LegislativeCategory)?.ParseEnum<LegislativeClass>(); public override bool SleeperCab => false; @@ -1124,45 +1124,40 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider #endregion } - // --------------------------------------------------------------------------------------- - public class XMLDeclarationHeavyLorryDataProviderV210 : XMLDeclarationVehicleDataProviderV20 + public abstract class XMLVehicleDataProviderHelperV201 : XMLDeclarationVehicleDataProviderV20 { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V210_JOBS; - public new const string XSD_TYPE = "Vehicle_Conventional_HeavyLorryDeclarationType"; - public new static readonly string QUALIFIED_XSD_TYPE = - XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - - public XMLDeclarationHeavyLorryDataProviderV210( - IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + public virtual string PowertrainPositionPrefix => "P"; + + protected XMLVehicleDataProviderHelperV201(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { } + #region Overrides of XMLDeclarationVehicleDataProviderV10 - public override IAdvancedDriverAssistantSystemDeclarationInputData ADAS => ADASReader.ADASInputData; - - public override IList<ITorqueLimitInputData> TorqueLimits => - ElementExists(XMLNames.Vehicle_TorqueLimits) ? base.TorqueLimits : null; - - public override TankSystem? TankSystem => - ElementExists(XMLNames.Vehicle_NgTankSystem) - ? EnumHelper.ParseEnum<TankSystem>(GetString(XMLNames.Vehicle_NgTankSystem)) - : (TankSystem?)null; + public override VehicleCategory VehicleCategory + { + get + { + var val = GetString(XMLNames.ChassisConfiguration); + return "Rigid Lorry".Equals(val, StringComparison.InvariantCultureIgnoreCase) + ? VehicleCategory.RigidTruck : val.ParseEnum<VehicleCategory>(); + } + } + + public override Kilogram CurbMassChassis => GetDouble(XMLNames.CorrectedActualMass).SI<Kilogram>(); + public override Kilogram GrossVehicleMassRating => GetDouble(XMLNames.TPMLM).SI<Kilogram>(); + #endregion - } - - // --------------------------------------------------------------------------------------- + + #region Overrides of XMLDeclarationVehicleDataProviderV20 - public abstract class XMLVehicleDataProviderHelperV201 : XMLDeclarationVehicleDataProviderV20 - { - public virtual string PowertrainPositionPrefix => "P"; + public override bool SleeperCab => GetBool(XMLNames.Vehicle_SleeperCab); - protected XMLVehicleDataProviderHelperV201(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) - : base(jobData, xmlNode, sourceFile) { } + #endregion - public override Dictionary<PowertrainPosition, List<Tuple<int, TableData>>> ElectricMotorTorqueLimits => ElementExists(XMLNames.ElectricMotorTorqueLimits) ? ReadElectricMotorTorqueLimits() : null; @@ -1211,6 +1206,36 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider } } + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHeavyLorryDataProviderV210 : XMLVehicleDataProviderHelperV201 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V210_JOBS; + public new const string XSD_TYPE = "Vehicle_Conventional_HeavyLorryDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationHeavyLorryDataProviderV210( + IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override IAdvancedDriverAssistantSystemDeclarationInputData ADAS => ADASReader.ADASInputData; + + public override IList<ITorqueLimitInputData> TorqueLimits => + ElementExists(XMLNames.Vehicle_TorqueLimits) ? base.TorqueLimits : null; + + public override TankSystem? TankSystem => + ElementExists(XMLNames.Vehicle_NgTankSystem) + ? EnumHelper.ParseEnum<TankSystem>(GetString(XMLNames.Vehicle_NgTankSystem)) + : (TankSystem?)null; + + #endregion + } + + + // --------------------------------------------------------------------------------------- diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_heavyLorry_AMT_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_heavyLorry_AMT_n_opt.xml index efb56b1778..50f6b8c0ea 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_heavyLorry_AMT_n_opt.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_heavyLorry_AMT_n_opt.xml @@ -13,6 +13,7 @@ <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> <IdlingSpeed>650</IdlingSpeed> <RetarderType>None</RetarderType> + <RetarderRatio>2.000</RetarderRatio> <AngledriveType>None</AngledriveType> <PTO xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:PTOType"> <v2.0:PTOShaftsGearWheels>none</v2.0:PTOShaftsGearWheels> @@ -20,6 +21,7 @@ </PTO> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> <VocationalVehicle>false</VocationalVehicle> + <NgTankSystem>Compressed</NgTankSystem> <SleeperCab>false</SleeperCab> <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> <ADAS xsi:type="ADAS_Conventional_Type"> diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index ad2ff63748..ad95b7fb0f 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -237,6 +237,7 @@ <Compile Include="XML\XMLCompleteBusReaderTest.cs" /> <Compile Include="XML\XMLDeclarationInputTest.cs" /> <Compile Include="XML\XMLDeclarationInputv210.cs" /> + <Compile Include="XML\XMLDeclarationInputv210VehicleDataTest.cs" /> <Compile Include="XML\XMLDeclarationReaderVersionsTest.cs" /> <Compile Include="XML\XMLEngineeringInputRefTest.cs" /> <Compile Include="XML\XMLEngineeringInputSingleTest.cs" /> diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210VehicleDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210VehicleDataTest.cs new file mode 100644 index 0000000000..4c054b6298 --- /dev/null +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210VehicleDataTest.cs @@ -0,0 +1,56 @@ +using System.IO; +using System.Xml; +using Ninject; +using NUnit.Framework; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; + +namespace TUGraz.VectoCore.Tests.XML +{ + [TestFixture] + public class XMLDeclarationInputv210VehicleDataTest + { + protected IXMLInputDataReader xmlInputReader; + private IKernel _kernel; + + + private const string Optional_TESTS_DIR = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries"; + + [OneTimeSetUp] + public void RunBeforeAnyTests() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + + _kernel = new StandardKernel(new VectoNinjectModule()); + xmlInputReader = _kernel.Get<IXMLInputDataReader>(); + } + + [TestCase(@"Conventional_heavyLorry_AMT_n_opt.xml", Optional_TESTS_DIR)] + public void TestConventionalHeavyLorryVehicleData(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + var vehicle = (IXMLDeclarationVehicleData) dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.AreEqual(LegislativeClass.N3, vehicle.LegislativeClass); + Assert.AreEqual(VehicleCategory.RigidTruck, vehicle.VehicleCategory); + Assert.AreEqual(AxleConfiguration.AxleConfig_4x2, vehicle.AxleConfiguration); + Assert.AreEqual(6000.SI<Kilogram>(), vehicle.CurbMassChassis); + Assert.AreEqual(12000.SI<Kilogram>(), vehicle.GrossVehicleMassRating); + Assert.AreEqual(650.00.RPMtoRad(), vehicle.EngineIdleSpeed); + Assert.AreEqual(RetarderType.None, vehicle.RetarderType); + Assert.AreEqual(2.000, vehicle.RetarderRatio); + Assert.AreEqual(AngledriveType.None, vehicle.AngledriveType); + Assert.IsNotNull(vehicle.PTOTransmissionInputData); + Assert.AreEqual(false, vehicle.ZeroEmissionVehicle); + Assert.AreEqual(false, vehicle.VocationalVehicle); + Assert.AreEqual(TankSystem.Compressed, vehicle.TankSystem); + Assert.AreEqual(false, vehicle.SleeperCab); + Assert.AreEqual("ASDF", vehicle.VehicleTypeApprovalNumber); + } + } +} -- GitLab