From 41716aea4384ca0fcc0b7d7583e3f91d3227cc41 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Fri, 15 Dec 2017 10:50:09 +0100 Subject: [PATCH] extend xml declaration input tests to read out allowed options from XSD --- .../DeclarationDataAdapter.cs | 12 +- .../VectoCore/Models/Declaration/Segments.cs | 5 + .../XML/XMLDeclarationInputTest.cs | 340 ++++++++++-------- 3 files changed, 198 insertions(+), 159 deletions(-) diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs index c5803432b4..c3e9d134a0 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs @@ -50,6 +50,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter { public class DeclarationDataAdapter : AbstractSimulationDataAdapter { + public static readonly GearboxType[] SupportedGearboxTypes = {GearboxType.MT, GearboxType.AMT, GearboxType.ATPowerSplit, GearboxType.ATSerial}; + public DriverData CreateDriverData() { var lookAheadData = new DriverData.LACData { @@ -208,13 +210,9 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter WarnDeclarationMode("GearboxData"); } var retVal = SetCommonGearboxData(gearbox); - switch (gearbox.Type) { - case GearboxType.DrivingCycle: - case GearboxType.ATPowerSplit: - throw new VectoSimulationException( - "Unsupported gearbox type: {0}!", retVal.Type); - //case GearboxType.Custom: - // throw new VectoSimulationException("Custom Transmission not supported in DeclarationMode!"); + + if (!SupportedGearboxTypes.Contains(gearbox.Type)) { + throw new VectoSimulationException("Unsupported gearbox type: {0}!", retVal.Type); } var gearsInput = gearbox.Gears; if (gearsInput.Count < 1) { diff --git a/VectoCore/VectoCore/Models/Declaration/Segments.cs b/VectoCore/VectoCore/Models/Declaration/Segments.cs index 90f976b596..9addc962a2 100644 --- a/VectoCore/VectoCore/Models/Declaration/Segments.cs +++ b/VectoCore/VectoCore/Models/Declaration/Segments.cs @@ -70,6 +70,11 @@ namespace TUGraz.VectoCore.Models.Declaration return Lookup(vehicleCategory, axleConfiguration, grossVehicleMassRating, curbWeight, false); } + public VehicleCategory[] GetVehicleCategories(bool declarationOnly = true) + { + return _segmentTable.AsEnumerable().Where(r => !declarationOnly || r.Field<string>("valid") == "1").Select(r => EnumHelper.ParseEnum<VehicleCategory>(r.Field<string>("vehiclecategory"))).Distinct().ToArray(); + } + public Segment Lookup(VehicleCategory vehicleCategory, AxleConfiguration axleConfiguration, Kilogram grossVehicleMassRating, Kilogram curbWeight, bool considerInvalid) { diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs index cd0cbd2c76..0d88cb16b4 100644 --- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs @@ -51,10 +51,11 @@ using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Utils; using TUGraz.VectoCore.Utils; using NUnit.Framework; +using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; namespace TUGraz.VectoCore.Tests.XML { - [TestFixture] + [TestFixture] public class XMLDeclarationInputTest { const string SampleVehicleDecl = "TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample.xml"; @@ -94,7 +95,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual("560.00", fcMapTable.Rows[0][0]); var fcMap = FuelConsumptionMapReader.Create(fcMapTable); - Assert.AreEqual(1256.SI(Unit.SI.Gramm.Per.Hour).Value(), + Assert.AreEqual(1256.SI(Unit.SI.Gramm.Per.Hour).Value(), fcMap.GetFuelConsumption(0.SI<NewtonMeter>(), 560.RPMtoRad()).Value.Value()); var fldTable = engineDataProvider.FullLoadCurve; @@ -105,6 +106,39 @@ namespace TUGraz.VectoCore.Tests.XML var fldMap = FullLoadCurveReader.Create(fldTable, true); } + [TestCase()] + public void TestEngineFuelTypes() + { + var fuelTypes = GetEnumOptions("FuelTypeType", "1.0"); + foreach (var fuel in fuelTypes) { + var reader = XmlReader.Create(SampleVehicleDecl); + + var doc = new XmlDocument(); + doc.Load(reader); + var nav = doc.CreateNavigator(); + var manager = new XmlNamespaceManager(nav.NameTable); + var helper = new XPathHelper(ExecutionMode.Declaration); + helper.AddNamespaces(manager); + + var technology = nav.SelectSingleNode(helper.QueryAbs( + helper.NSPrefix(XMLNames.VectoInputDeclaration, + Constants.XML.RootNSPrefix), + XMLNames.Component_Vehicle, + XMLNames.Vehicle_Components, + XMLNames.Component_Engine, XMLNames.ComponentDataWrapper, XMLNames.Engine_FuelType), + manager); + technology.SetValue(fuel); + var modified = XmlReader.Create(new StringReader(nav.OuterXml)); + + var inputDataProvider = new XMLDeclarationInputDataProvider(modified, + true); + var techInput = inputDataProvider.JobInputData.Vehicle.EngineInputData.FuelType; + Assert.AreEqual(fuel, techInput.ToXMLFormat()); + + Assert.NotNull(DeclarationData.FuelData.Lookup(techInput)); + } + } + [TestCase] public void TestXMLInputGbx() { @@ -149,7 +183,9 @@ namespace TUGraz.VectoCore.Tests.XML var lossMap = TransmissionLossMapReader.Create(lossMapData, axlegearDataProvider.Ratio, "AxleGear"); Assert.IsNotNull(lossMap); - AssertHelper.Exception<VectoException>(() => { var tmp = axlegearDataProvider.Efficiency; }); + AssertHelper.Exception<VectoException>(() => { + var tmp = axlegearDataProvider.Efficiency; + }); } [TestCase] @@ -184,7 +220,7 @@ namespace TUGraz.VectoCore.Tests.XML var axles = vehicleDataProvider.Axles; var tyre = axles[0].Tyre; - Assert.AreEqual("315/70 R22.5",tyre.Dimension); + Assert.AreEqual("315/70 R22.5", tyre.Dimension); Assert.AreEqual(0.0055, tyre.RollResistanceCoefficient); Assert.AreEqual(31300, tyre.TyreTestLoad.Value()); Assert.AreEqual("e12*0815/8051*2017/05E0000*00", tyre.CertificationNumber); @@ -216,7 +252,7 @@ namespace TUGraz.VectoCore.Tests.XML XMLNames.ComponentDataWrapper, XMLNames.AxleWheels_Axles, helper.QueryConstraint(XMLNames.AxleWheels_Axles_Axle, "1", null, string.Empty) - ), manager); + ), manager); firstAxle.MoveToAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, string.Empty); firstAxle.SetTypedValue(2); @@ -226,7 +262,9 @@ namespace TUGraz.VectoCore.Tests.XML var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); var vehicleDataProvider = inputDataProvider.JobInputData.Vehicle; - AssertHelper.Exception<VectoException>(() => { var axles = vehicleDataProvider.Axles; }); + AssertHelper.Exception<VectoException>(() => { + var axles = vehicleDataProvider.Axles; + }); } [TestCase] @@ -249,7 +287,7 @@ namespace TUGraz.VectoCore.Tests.XML XMLNames.ComponentDataWrapper, XMLNames.AxleWheels_Axles, helper.QueryConstraint(XMLNames.AxleWheels_Axles_Axle, "1", null, string.Empty) - ), manager); + ), manager); firstAxle.MoveToAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, string.Empty); firstAxle.SetTypedValue(0); @@ -257,7 +295,9 @@ namespace TUGraz.VectoCore.Tests.XML var modified = XmlReader.Create(new StringReader(nav.OuterXml)); AssertHelper.Exception<VectoException>( - () => { var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); }); + () => { + var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); + }); } [TestCase] @@ -280,7 +320,7 @@ namespace TUGraz.VectoCore.Tests.XML XMLNames.ComponentDataWrapper, XMLNames.AxleWheels_Axles, helper.QueryConstraint(XMLNames.AxleWheels_Axles_Axle, "1", null, string.Empty) - ), manager); + ), manager); firstAxle.MoveToAttribute(XMLNames.AxleWheels_Axles_Axle_AxleNumber_Attr, string.Empty); firstAxle.SetTypedValue(3); @@ -290,7 +330,9 @@ namespace TUGraz.VectoCore.Tests.XML var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); var vehicleDataProvider = inputDataProvider.JobInputData.Vehicle; - AssertHelper.Exception<VectoException>(() => { var axles = vehicleDataProvider.Axles; }); + AssertHelper.Exception<VectoException>(() => { + var axles = vehicleDataProvider.Axles; + }); } [TestCase] @@ -312,7 +354,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual("Standard technology - LED headlights, all", aux3.Technology.First()); } - + [TestCase] public void TestVehicleInput() { @@ -390,7 +432,9 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(6, angledriveDataProvider.LossMap.Rows.Count); Assert.AreEqual("-10000.00", angledriveDataProvider.LossMap.Rows[0][1]); - AssertHelper.Exception<VectoException>(() => { var tmp = angledriveDataProvider.Efficiency; }); + AssertHelper.Exception<VectoException>(() => { + var tmp = angledriveDataProvider.Efficiency; + }); } [TestCase] @@ -478,7 +522,9 @@ namespace TUGraz.VectoCore.Tests.XML var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); - AssertHelper.Exception<VectoException>(() => { var tmp = inputDataProvider.JobInputData.Vehicle.RetarderInputData.Ratio; }); + AssertHelper.Exception<VectoException>(() => { + var tmp = inputDataProvider.JobInputData.Vehicle.RetarderInputData.Ratio; + }); } [TestCase] @@ -519,14 +565,9 @@ namespace TUGraz.VectoCore.Tests.XML [TestCase] public void TestRetarderTypes() { - var retarderTypes = new Dictionary<string, RetarderType>() { - { "None", RetarderType.None }, - { "Losses included in Gearbox", RetarderType.LossesIncludedInTransmission }, - { "Engine Retarder", RetarderType.EngineRetarder }, - { "Transmission Input Retarder", RetarderType.TransmissionInputRetarder }, - { "Transmission Output Retarder", RetarderType.TransmissionOutputRetarder } - } - ; + var retarderTypes = GetEnumOptions("RetarderTypeType", "1.0"); + Assert.IsTrue(retarderTypes.Length > 0); + foreach (var retarderType in retarderTypes) { var reader = XmlReader.Create(SampleVehicleDecl); @@ -541,30 +582,20 @@ namespace TUGraz.VectoCore.Tests.XML helper.NSPrefix(XMLNames.VectoInputDeclaration, Constants.XML.RootNSPrefix), XMLNames.Component_Vehicle, XMLNames.Vehicle_RetarderType), manager); - xmlRetarderType.SetValue(retarderType.Key); + xmlRetarderType.SetValue(retarderType); var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); - Assert.AreEqual(retarderType.Value, inputDataProvider.JobInputData.Vehicle.RetarderInputData.Type); + Assert.AreEqual(retarderType, inputDataProvider.JobInputData.Vehicle.RetarderInputData.Type.ToXMLFormat()); } } [TestCase] public void TestAxleConfigurationTypes() { - var axleConfigurations = new Dictionary<string, AxleConfiguration>() { - { "4x2", AxleConfiguration.AxleConfig_4x2 }, - //{ "4x4", AxleConfiguration.AxleConfig_4x4 }, - { "6x2", AxleConfiguration.AxleConfig_6x2 }, - { "6x4", AxleConfiguration.AxleConfig_6x4 }, - //{ "6x6", AxleConfiguration.AxleConfig_6x6 }, - //{ "8x2", AxleConfiguration.AxleConfig_8x2 }, - { "8x4", AxleConfiguration.AxleConfig_8x4 }, - //{ "8x6", AxleConfiguration.AxleConfig_8x6 }, - //{ "8x8", AxleConfiguration.AxleConfig_8x8 } - }; + var axleConfigurations = GetEnumOptions("VehicleAxleConfigurationDeclarationType", "1.0"); foreach (var axleConfiguration in axleConfigurations) { var reader = XmlReader.Create(SampleVehicleDecl); @@ -575,30 +606,25 @@ namespace TUGraz.VectoCore.Tests.XML var helper = new XPathHelper(ExecutionMode.Declaration); helper.AddNamespaces(manager); - var xmlRetarderType = nav.SelectSingleNode(helper.QueryAbs( + var xmlAxleConf = nav.SelectSingleNode(helper.QueryAbs( helper.NSPrefix(XMLNames.VectoInputDeclaration, Constants.XML.RootNSPrefix), XMLNames.Component_Vehicle, XMLNames.Vehicle_AxleConfiguration), manager); - xmlRetarderType.SetValue(axleConfiguration.Key); + xmlAxleConf.SetValue(axleConfiguration); var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); - Assert.AreEqual(axleConfiguration.Value, inputDataProvider.JobInputData.Vehicle.AxleConfiguration); + Assert.AreEqual(axleConfiguration, inputDataProvider.JobInputData.Vehicle.AxleConfiguration.GetName()); } } [TestCase] public void TestVehicleCategoryTypes() { - var vehicleCategories = new Dictionary<string, VehicleCategory>() { - { "Rigid Truck", VehicleCategory.RigidTruck }, - { "Tractor", VehicleCategory.Tractor }, - //{ "City Bus", VehicleCategory.CityBus }, - //{ "Interurban Bus", VehicleCategory.InterurbanBus }, - //{ "Coach", VehicleCategory.Coach } - }; + var vehicleCategories = GetEnumOptions("VehicleCategoryDeclarationType", "1.0"); + var allowedCategories = DeclarationData.Segments.GetVehicleCategories(); foreach (var vehicleCategory in vehicleCategories) { var reader = XmlReader.Create(SampleVehicleDecl); @@ -613,13 +639,15 @@ namespace TUGraz.VectoCore.Tests.XML helper.NSPrefix(XMLNames.VectoInputDeclaration, Constants.XML.RootNSPrefix), XMLNames.Component_Vehicle, XMLNames.Vehicle_VehicleCategory), manager); - xmlRetarderType.SetValue(vehicleCategory.Key); + xmlRetarderType.SetValue(vehicleCategory); var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); - Assert.AreEqual(vehicleCategory.Value, inputDataProvider.JobInputData.Vehicle.VehicleCategory); + var vehCategory = inputDataProvider.JobInputData.Vehicle.VehicleCategory; + Assert.AreEqual(vehicleCategory, vehCategory.ToXMLFormat()); + Assert.IsTrue(allowedCategories.Contains(vehCategory)); } } @@ -627,8 +655,8 @@ namespace TUGraz.VectoCore.Tests.XML [TestCase] public void TestWheelsTypes() { - var retarderTypes = new Dictionary<string, RetarderType>() { }; - foreach (var retarderType in retarderTypes) { + var wheelDimensions = GetEnumOptions("TyreDimensionType", "1.0"); + foreach (var wheelDimension in wheelDimensions) { var reader = XmlReader.Create(SampleVehicleDecl); var doc = new XmlDocument(); @@ -638,94 +666,97 @@ namespace TUGraz.VectoCore.Tests.XML var helper = new XPathHelper(ExecutionMode.Declaration); helper.AddNamespaces(manager); - var xmlRetarderType = nav.SelectSingleNode(helper.QueryAbs( - helper.NSPrefix(XMLNames.VectoInputDeclaration, - Constants.XML.RootNSPrefix), - XMLNames.Component_Vehicle, - XMLNames.Vehicle_RetarderType), + var tyredimensionNode = nav.SelectSingleNode(helper.QueryAbs( + helper.NSPrefix(XMLNames.VectoInputDeclaration, + Constants.XML.RootNSPrefix), + XMLNames.Component_Vehicle, XMLNames.Vehicle_Components, XMLNames.Component_AxleWheels, + XMLNames.ComponentDataWrapper, + XMLNames.AxleWheels_Axles, XMLNames.AxleWheels_Axles_Axle, XMLNames.AxleWheels_Axles_Axle_Tyre, + XMLNames.ComponentDataWrapper, XMLNames.AxleWheels_Axles_Axle_Dimension), manager); - xmlRetarderType.SetValue(retarderType.Key); + tyredimensionNode.SetValue(wheelDimension); var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); - Assert.AreEqual(retarderType.Value, - inputDataProvider.JobInputData.Vehicle.RetarderInputData.Type); + var tyreDimension = inputDataProvider.JobInputData.Vehicle.Axles.First().Tyre.Dimension; + Assert.AreEqual(wheelDimension, tyreDimension); + Assert.IsTrue(DeclarationData.Wheels.GetWheelsDimensions().Contains(tyreDimension), "Unknown tyre dimension {0}", + tyreDimension); } } [TestCase] public void TestPTOTypeTypes() { - var ptoTypes = new string[][] { - new[] { "none", "none" }, - new[] { "only one engaged gearwheel above oil level", "none" }, - new[] { "only the drive shaft of the PTO", "shift claw, synchronizer, sliding gearwheel" }, - new[] { "only the drive shaft of the PTO", "multi-disc clutch" }, - new[] { "only the drive shaft of the PTO", "multi-disc clutch, oil pump" }, - new[] { "drive shaft and/or up to 2 gear wheels", "shift claw, synchronizer, sliding gearwheel" }, - new[] { "drive shaft and/or up to 2 gear wheels", "multi-disc clutch" }, - new[] { "drive shaft and/or up to 2 gear wheels", "multi-disc clutch, oil pump" }, - new[] { "drive shaft and/or more than 2 gear wheels", "shift claw, synchronizer, sliding gearwheel" }, - new[] { "drive shaft and/or more than 2 gear wheels", "multi-disc clutch" }, - new[] { "drive shaft and/or more than 2 gear wheels", "multi-disc clutch, oil pump" }, - }; - foreach (var ptoType in ptoTypes) { - var reader = XmlReader.Create(SampleVehicleDecl); - - var doc = new XmlDocument(); - doc.Load(reader); - var nav = doc.CreateNavigator(); - var manager = new XmlNamespaceManager(nav.NameTable); - var helper = new XPathHelper(ExecutionMode.Declaration); - helper.AddNamespaces(manager); - - var ptoGearWheels = nav.SelectSingleNode(helper.QueryAbs( - helper.NSPrefix(XMLNames.VectoInputDeclaration, - Constants.XML.RootNSPrefix), - XMLNames.Component_Vehicle, - XMLNames.Vehicle_PTO, - XMLNames.Vehicle_PTO_ShaftsGearWheels), - manager); - ptoGearWheels.SetValue(ptoType[0]); - var ptoOther = nav.SelectSingleNode(helper.QueryAbs( - helper.NSPrefix(XMLNames.VectoInputDeclaration, - Constants.XML.RootNSPrefix), - XMLNames.Component_Vehicle, - XMLNames.Vehicle_PTO, - XMLNames.Vehicle_PTO_OtherElements), - manager); - ptoOther.SetValue(ptoType[1]); - - var modified = XmlReader.Create(new StringReader(nav.OuterXml)); - - var inputDataProvider = new XMLDeclarationInputDataProvider(modified, - true); - - if (ptoType[0] == "none") { - Assert.AreEqual("None", - inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType); - } else if (ptoType[0] == "only one engaged gearwheel above oil level") { - Assert.AreEqual(ptoType[0], - inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType); - } else { - Assert.AreEqual(string.Format("{0} - {1}", ptoType[0], ptoType[1]), - inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType); + var ptoGearWheels = GetEnumOptions("PTOShaftsGearWheelsType", "1.0"); + var ptoOthers = GetEnumOptions("PTOOtherElementsType", "1.0"); + + foreach (var ptoGearWheel in ptoGearWheels) { + foreach (var ptoOther in ptoOthers) { + if (ptoGearWheel == "none" || ptoGearWheel == "only one engaged gearwheel above oil level") { + if (ptoOther != "none") { + continue; + } + } else { + if (ptoOther == "none") { + continue; + } + } + var reader = XmlReader.Create(SampleVehicleDecl); + + var doc = new XmlDocument(); + doc.Load(reader); + var nav = doc.CreateNavigator(); + var manager = new XmlNamespaceManager(nav.NameTable); + var helper = new XPathHelper(ExecutionMode.Declaration); + helper.AddNamespaces(manager); + + var ptoGearWheelsNode = nav.SelectSingleNode(helper.QueryAbs( + helper.NSPrefix(XMLNames.VectoInputDeclaration, + Constants.XML.RootNSPrefix), + XMLNames.Component_Vehicle, + XMLNames.Vehicle_PTO, + XMLNames.Vehicle_PTO_ShaftsGearWheels), + manager); + ptoGearWheelsNode.SetValue(ptoGearWheel); + var ptoOtherNode = nav.SelectSingleNode(helper.QueryAbs( + helper.NSPrefix(XMLNames.VectoInputDeclaration, + Constants.XML.RootNSPrefix), + XMLNames.Component_Vehicle, + XMLNames.Vehicle_PTO, + XMLNames.Vehicle_PTO_OtherElements), + manager); + ptoOtherNode.SetValue(ptoOther); + + var modified = XmlReader.Create(new StringReader(nav.OuterXml)); + + var inputDataProvider = new XMLDeclarationInputDataProvider(modified, + true); + + if (ptoGearWheel == "none") { + Assert.AreEqual("None", + inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType); + } else if (ptoGearWheel == "only one engaged gearwheel above oil level") { + Assert.AreEqual(ptoGearWheel, + inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType); + } else { + Assert.AreEqual(string.Format("{0} - {1}", ptoGearWheel, ptoOther), + inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType); + } + Assert.NotNull(DeclarationData.PTOTransmission.Lookup(inputDataProvider.JobInputData.Vehicle + .PTOTransmissionInputData + .PTOTransmissionType)); } - DeclarationData.PTOTransmission.Lookup(inputDataProvider.JobInputData.Vehicle.PTOTransmissionInputData.PTOTransmissionType); } } [TestCase] public void TestAngledriveTypes() { - var angledriveTypes = new Dictionary<string, AngledriveType>() { - { "None", AngledriveType.None }, - { "Losses included in Gearbox", AngledriveType.LossesIncludedInGearbox }, - { "Separate Angledrive", AngledriveType.SeparateAngledrive } - }; + var angledriveTypes = GetEnumOptions("AngledriveTypeType", "1.0"); foreach (var angleDrive in angledriveTypes) { var reader = XmlReader.Create(SampleVehicleDecl); @@ -736,32 +767,27 @@ namespace TUGraz.VectoCore.Tests.XML var helper = new XPathHelper(ExecutionMode.Declaration); helper.AddNamespaces(manager); - var xmlRetarderType = nav.SelectSingleNode(helper.QueryAbs( - helper.NSPrefix(XMLNames.VectoInputDeclaration, - Constants.XML.RootNSPrefix), - XMLNames.Component_Vehicle, - XMLNames.Vehicle_AngledriveType), + var angledriveNode = nav.SelectSingleNode(helper.QueryAbs( + helper.NSPrefix(XMLNames.VectoInputDeclaration, + Constants.XML.RootNSPrefix), + XMLNames.Component_Vehicle, + XMLNames.Vehicle_AngledriveType), manager); - xmlRetarderType.SetValue(angleDrive.Key); + angledriveNode.SetValue(angleDrive); var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); - Assert.AreEqual(angleDrive.Value, inputDataProvider.JobInputData.Vehicle.AngledriveInputData.Type); + Assert.AreEqual(angleDrive, inputDataProvider.JobInputData.Vehicle.AngledriveInputData.Type.ToXMLFormat()); } } [TestCase] public void TestGearboxTypes() { - var gearboxTypes = new Dictionary<string, GearboxType>() { - { "SMT", GearboxType.MT }, - { "AMT", GearboxType.AMT }, - { "APT-S", GearboxType.ATSerial }, - { "APT-P", GearboxType.ATPowerSplit } - }; + var gearboxTypes = GetEnumOptions("GearboxTransmissionTypeType", "1.0"); foreach (var gearboxType in gearboxTypes) { var reader = XmlReader.Create(SampleVehicleDecl); @@ -773,22 +799,24 @@ namespace TUGraz.VectoCore.Tests.XML helper.AddNamespaces(manager); var xmlRetarderType = nav.SelectSingleNode(helper.QueryAbs( - helper.NSPrefix(XMLNames.VectoInputDeclaration, - Constants.XML.RootNSPrefix), - XMLNames.Component_Vehicle, - XMLNames.Vehicle_Components, - XMLNames.Component_Gearbox, - XMLNames.ComponentDataWrapper, - XMLNames.Gearbox_TransmissionType), + helper.NSPrefix(XMLNames.VectoInputDeclaration, + Constants.XML.RootNSPrefix), + XMLNames.Component_Vehicle, + XMLNames.Vehicle_Components, + XMLNames.Component_Gearbox, + XMLNames.ComponentDataWrapper, + XMLNames.Gearbox_TransmissionType), manager); - xmlRetarderType.SetValue(gearboxType.Key); + xmlRetarderType.SetValue(gearboxType); var modified = XmlReader.Create(new StringReader(nav.OuterXml)); var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); - Assert.AreEqual(gearboxType.Value, inputDataProvider.JobInputData.Vehicle.GearboxInputData.Type); + var gbxType = inputDataProvider.JobInputData.Vehicle.GearboxInputData.Type; + Assert.AreEqual(gearboxType, gbxType.ToXMLFormat()); + Assert.IsTrue(DeclarationDataAdapter.SupportedGearboxTypes.Contains(gbxType)); } } @@ -823,10 +851,14 @@ namespace TUGraz.VectoCore.Tests.XML var inputDataProvider = new XMLDeclarationInputDataProvider(reader, true); - Assert.AreEqual(CertificationMethod.Option2, inputDataProvider.JobInputData.Vehicle.GearboxInputData.CertificationMethod); - Assert.AreEqual(CertificationMethod.Measured, inputDataProvider.JobInputData.Vehicle.AxleGearInputData.CertificationMethod); - Assert.AreEqual(CertificationMethod.Measured, inputDataProvider.JobInputData.Vehicle.RetarderInputData.CertificationMethod); - Assert.AreEqual(CertificationMethod.Measured, inputDataProvider.JobInputData.Vehicle.AirdragInputData.CertificationMethod); + Assert.AreEqual(CertificationMethod.Option2, + inputDataProvider.JobInputData.Vehicle.GearboxInputData.CertificationMethod); + Assert.AreEqual(CertificationMethod.Measured, + inputDataProvider.JobInputData.Vehicle.AxleGearInputData.CertificationMethod); + Assert.AreEqual(CertificationMethod.Measured, + inputDataProvider.JobInputData.Vehicle.RetarderInputData.CertificationMethod); + Assert.AreEqual(CertificationMethod.Measured, + inputDataProvider.JobInputData.Vehicle.AirdragInputData.CertificationMethod); } [TestCase] @@ -838,7 +870,8 @@ namespace TUGraz.VectoCore.Tests.XML [TestCase] public void TestAuxElectricSystemTechTypes() { - TestAuxTech(AuxiliaryType.ElectricSystem, GetEnumOptions("AuxESTechnologyType", "1.0"), DeclarationData.ElectricSystem); + TestAuxTech(AuxiliaryType.ElectricSystem, GetEnumOptions("AuxESTechnologyType", "1.0"), + DeclarationData.ElectricSystem); } [TestCase] @@ -850,13 +883,15 @@ namespace TUGraz.VectoCore.Tests.XML [TestCase] public void TestAuxPneumaticSystemTechTypes() { - TestAuxTech(AuxiliaryType.PneumaticSystem, GetEnumOptions("AuxPSTechnologyType", "1.0"), DeclarationData.PneumaticSystem); + TestAuxTech(AuxiliaryType.PneumaticSystem, GetEnumOptions("AuxPSTechnologyType", "1.0"), + DeclarationData.PneumaticSystem); } [TestCase] public void TestAuxHVACTechTypes() { - TestAuxTech(AuxiliaryType.HVAC, GetEnumOptions("AuxHVACTechnologyType", "1.0"), DeclarationData.HeatingVentilationAirConditioning); + TestAuxTech(AuxiliaryType.HVAC, GetEnumOptions("AuxHVACTechnologyType", "1.0"), + DeclarationData.HeatingVentilationAirConditioning); } private string[] GetEnumOptions(string xmlType, string schemaVersion) @@ -870,7 +905,8 @@ namespace TUGraz.VectoCore.Tests.XML } var reader = new XPathDocument(resource); var nav = reader.CreateNavigator(); - var nodes = nav.Select(string.Format("//*[local-name()='simpleType' and @name='{0}']//*[local-name()='enumeration']/@value", xmlType)); + var nodes = nav.Select( + string.Format("//*[local-name()='simpleType' and @name='{0}']//*[local-name()='enumeration']/@value", xmlType)); var retVal = new List<string>(); foreach (var node in nodes) { retVal.Add(node.ToString()); @@ -879,7 +915,7 @@ namespace TUGraz.VectoCore.Tests.XML } private void TestAuxTech(AuxiliaryType aux, string[] techs, IDeclarationAuxiliaryTable auxLookup) - { + { foreach (var tech in techs) { var reader = XmlReader.Create(SampleVehicleDecl); @@ -895,7 +931,8 @@ namespace TUGraz.VectoCore.Tests.XML Constants.XML.RootNSPrefix), XMLNames.Component_Vehicle, XMLNames.Vehicle_Components, - XMLNames.Component_Auxiliaries, XMLNames.ComponentDataWrapper, aux.ToString(), XMLNames.Auxiliaries_Auxiliary_Technology), + XMLNames.Component_Auxiliaries, XMLNames.ComponentDataWrapper, aux.ToString(), + XMLNames.Auxiliaries_Auxiliary_Technology), manager); technology.SetValue(tech); var modified = XmlReader.Create(new StringReader(nav.OuterXml)); @@ -906,10 +943,9 @@ namespace TUGraz.VectoCore.Tests.XML .First().Technology.First(); Assert.AreEqual(tech, techInput); - Assert.IsTrue(auxLookup.GetTechnologies().Contains(techInput), "technology '{0}' for aux type '{1}' not known!", techInput, aux); + Assert.IsTrue(auxLookup.GetTechnologies().Contains(techInput), "technology '{0}' for aux type '{1}' not known!", + techInput, aux); } } - - } -} +} \ No newline at end of file -- GitLab