diff --git a/Documentation/XML/VectoParameters.html b/Documentation/XML/VectoParameters.html index 3f14d0685465c8728e82d5fb9feaf927275e7eee..85b56480635151eb4b62496ddd3f039022b82018 100644 --- a/Documentation/XML/VectoParameters.html +++ b/Documentation/XML/VectoParameters.html @@ -222,7 +222,7 @@ div.filter span.hidden span.icon {max-width: 256px;max-height: 256px;background- <!--/*--></root><!--*/--></style></head><body> <h1>Vecto Input Parameters</h1> <div class="schemaVersion">Schema Version: 0.6 1.0 1.0</div> - <div class="generated">Generated: 06.12.2017 17:01</div> + <div class="generated">Generated: 15.12.2017 10:50</div> <div class="nextParameter">Next free parameter: 269</div> <table border="1" class="parameters"> <thead> @@ -1144,9 +1144,9 @@ div.filter span.hidden span.icon {max-width: 256px;max-height: 256px;background- <td class="xmltype">tns:TyreDimensionType</td> <td class="comment"> <div class="declaration"> - Allowed values: <span class="enumEntry">"9 R22.5"</span>, <span class="enumEntry">"9.00 R20"</span>, <span class="enumEntry">"9.5 R17.5"</span>, <span class="enumEntry">"10 R17.5"</span>, <span class="enumEntry">"10 R22.5"</span>, <span class="enumEntry">"10.00 R20"</span>, <span class="enumEntry">"11 R22.5"</span>, <span class="enumEntry">"11.00 R20"</span>, <span class="enumEntry">"11.00 R22"</span>, <span class="enumEntry">"12 R22.5"</span>, <span class="enumEntry">"12.00 R20"</span>, <span class="enumEntry">"12.00 R24"</span>, <span class="enumEntry">"12.5 R20"</span>, <span class="enumEntry">"13 R22.5"</span>, <span class="enumEntry">"14.00 R20"</span>, <span class="enumEntry">"14.5 R20"</span>, <span class="enumEntry">"16.00 R20"</span>, <span class="enumEntry">"205/75 R17.5"</span>, <span class="enumEntry">"215/75 R17.5"</span>, <span class="enumEntry">"225/70 R17.5"</span>, <span class="enumEntry">"225/75 R17.5"</span>, <span class="enumEntry">"235/75 R17.5"</span>, <span class="enumEntry">"245/70 R17.5"</span>, <span class="enumEntry">"245/70 R19.5"</span>, <span class="enumEntry">"255/70 R22.5"</span>, <span class="enumEntry">"265/70 R17.5"</span>, <span class="enumEntry">"265/70 R19.5"</span>, <span class="enumEntry">"275/70 R22.5"</span>, <span class="enumEntry">"275/80 R22.5"</span>, <span class="enumEntry">"285/60 R22.5"</span>, <span class="enumEntry">"285/70 R19.5"</span>, <span class="enumEntry">"295/55 R22.5"</span>, <span class="enumEntry">"295/60 R22.5"</span>, <span class="enumEntry">"295/80 R22.5"</span>, <span class="enumEntry">"305/60 R22.5"</span>, <span class="enumEntry">"305/70 R19.5"</span>, <span class="enumEntry">"305/70 R22.5"</span>, <span class="enumEntry">"305/75 R24.5"</span>, <span class="enumEntry">"315/45 R22.5"</span>, <span class="enumEntry">"315/60 R22.5"</span>, <span class="enumEntry">"315/70 R22.5"</span>, <span class="enumEntry">"315/80 R22.5"</span>, <span class="enumEntry">"325/95 R24"</span>, <span class="enumEntry">"335/80 R20"</span>, <span class="enumEntry">"355/50 R22.5"</span>, <span class="enumEntry">"365/70 R22.5"</span>, <span class="enumEntry">"365/80 R20"</span>, <span class="enumEntry">"365/85 R20"</span>, <span class="enumEntry">"375/45 R22.5"</span>, <span class="enumEntry">"375/50 R22.5"</span>, <span class="enumEntry">"375/90 R22.5"</span>, <span class="enumEntry">"385/55 R22.5"</span>, <span class="enumEntry">"385/65 R22.5"</span>, <span class="enumEntry">"395/85 R20"</span>, <span class="enumEntry">"425/65 R22.5"</span>, <span class="enumEntry">"495/45 R22.5"</span>, <span class="enumEntry">"525/65 R22.5"</span></div> + Allowed values: <span class="enumEntry">"9 R22.5"</span>, <span class="enumEntry">"9.00 R20"</span>, <span class="enumEntry">"9.5 R17.5"</span>, <span class="enumEntry">"10 R17.5"</span>, <span class="enumEntry">"10 R22.5"</span>, <span class="enumEntry">"10.00 R20"</span>, <span class="enumEntry">"11 R22.5"</span>, <span class="enumEntry">"11.00 R20"</span>, <span class="enumEntry">"12 R22.5"</span>, <span class="enumEntry">"12.00 R20"</span>, <span class="enumEntry">"12.00 R24"</span>, <span class="enumEntry">"12.5 R20"</span>, <span class="enumEntry">"13 R22.5"</span>, <span class="enumEntry">"14.00 R20"</span>, <span class="enumEntry">"14.5 R20"</span>, <span class="enumEntry">"16.00 R20"</span>, <span class="enumEntry">"205/75 R17.5"</span>, <span class="enumEntry">"215/75 R17.5"</span>, <span class="enumEntry">"225/70 R17.5"</span>, <span class="enumEntry">"225/75 R17.5"</span>, <span class="enumEntry">"235/75 R17.5"</span>, <span class="enumEntry">"245/70 R17.5"</span>, <span class="enumEntry">"245/70 R19.5"</span>, <span class="enumEntry">"255/70 R22.5"</span>, <span class="enumEntry">"265/70 R17.5"</span>, <span class="enumEntry">"265/70 R19.5"</span>, <span class="enumEntry">"275/70 R22.5"</span>, <span class="enumEntry">"275/80 R22.5"</span>, <span class="enumEntry">"285/60 R22.5"</span>, <span class="enumEntry">"285/70 R19.5"</span>, <span class="enumEntry">"295/55 R22.5"</span>, <span class="enumEntry">"295/60 R22.5"</span>, <span class="enumEntry">"295/80 R22.5"</span>, <span class="enumEntry">"305/60 R22.5"</span>, <span class="enumEntry">"305/70 R19.5"</span>, <span class="enumEntry">"305/70 R22.5"</span>, <span class="enumEntry">"305/75 R24.5"</span>, <span class="enumEntry">"315/45 R22.5"</span>, <span class="enumEntry">"315/60 R22.5"</span>, <span class="enumEntry">"315/70 R22.5"</span>, <span class="enumEntry">"315/80 R22.5"</span>, <span class="enumEntry">"325/95 R24"</span>, <span class="enumEntry">"335/80 R20"</span>, <span class="enumEntry">"355/50 R22.5"</span>, <span class="enumEntry">"365/70 R22.5"</span>, <span class="enumEntry">"365/80 R20"</span>, <span class="enumEntry">"365/85 R20"</span>, <span class="enumEntry">"375/45 R22.5"</span>, <span class="enumEntry">"375/50 R22.5"</span>, <span class="enumEntry">"375/90 R22.5"</span>, <span class="enumEntry">"385/55 R22.5"</span>, <span class="enumEntry">"385/65 R22.5"</span>, <span class="enumEntry">"395/85 R20"</span>, <span class="enumEntry">"425/65 R22.5"</span>, <span class="enumEntry">"495/45 R22.5"</span>, <span class="enumEntry">"525/65 R20.5"</span></div> <div class="engineering"> - Allowed values: <span class="enumEntry">"9 R22.5"</span>, <span class="enumEntry">"9.00 R20"</span>, <span class="enumEntry">"9.5 R17.5"</span>, <span class="enumEntry">"10 R17.5"</span>, <span class="enumEntry">"10 R22.5"</span>, <span class="enumEntry">"10.00 R20"</span>, <span class="enumEntry">"11 R22.5"</span>, <span class="enumEntry">"11.00 R20"</span>, <span class="enumEntry">"11.00 R22"</span>, <span class="enumEntry">"12 R22.5"</span>, <span class="enumEntry">"12.00 R20"</span>, <span class="enumEntry">"12.00 R24"</span>, <span class="enumEntry">"12.5 R20"</span>, <span class="enumEntry">"13 R22.5"</span>, <span class="enumEntry">"14.00 R20"</span>, <span class="enumEntry">"14.5 R20"</span>, <span class="enumEntry">"16.00 R20"</span>, <span class="enumEntry">"205/75 R17.5"</span>, <span class="enumEntry">"215/75 R17.5"</span>, <span class="enumEntry">"225/70 R17.5"</span>, <span class="enumEntry">"225/75 R17.5"</span>, <span class="enumEntry">"235/75 R17.5"</span>, <span class="enumEntry">"245/70 R17.5"</span>, <span class="enumEntry">"245/70 R19.5"</span>, <span class="enumEntry">"255/70 R22.5"</span>, <span class="enumEntry">"265/70 R17.5"</span>, <span class="enumEntry">"265/70 R19.5"</span>, <span class="enumEntry">"275/70 R22.5"</span>, <span class="enumEntry">"275/80 R22.5"</span>, <span class="enumEntry">"285/60 R22.5"</span>, <span class="enumEntry">"285/70 R19.5"</span>, <span class="enumEntry">"295/55 R22.5"</span>, <span class="enumEntry">"295/60 R22.5"</span>, <span class="enumEntry">"295/80 R22.5"</span>, <span class="enumEntry">"305/60 R22.5"</span>, <span class="enumEntry">"305/70 R19.5"</span>, <span class="enumEntry">"305/70 R22.5"</span>, <span class="enumEntry">"305/75 R24.5"</span>, <span class="enumEntry">"315/45 R22.5"</span>, <span class="enumEntry">"315/60 R22.5"</span>, <span class="enumEntry">"315/70 R22.5"</span>, <span class="enumEntry">"315/80 R22.5"</span>, <span class="enumEntry">"325/95 R24"</span>, <span class="enumEntry">"335/80 R20"</span>, <span class="enumEntry">"355/50 R22.5"</span>, <span class="enumEntry">"365/70 R22.5"</span>, <span class="enumEntry">"365/80 R20"</span>, <span class="enumEntry">"365/85 R20"</span>, <span class="enumEntry">"375/45 R22.5"</span>, <span class="enumEntry">"375/50 R22.5"</span>, <span class="enumEntry">"375/90 R22.5"</span>, <span class="enumEntry">"385/55 R22.5"</span>, <span class="enumEntry">"385/65 R22.5"</span>, <span class="enumEntry">"395/85 R20"</span>, <span class="enumEntry">"425/65 R22.5"</span>, <span class="enumEntry">"495/45 R22.5"</span>, <span class="enumEntry">"525/65 R22.5"</span></div> + Allowed values: <span class="enumEntry">"9 R22.5"</span>, <span class="enumEntry">"9.00 R20"</span>, <span class="enumEntry">"9.5 R17.5"</span>, <span class="enumEntry">"10 R17.5"</span>, <span class="enumEntry">"10 R22.5"</span>, <span class="enumEntry">"10.00 R20"</span>, <span class="enumEntry">"11 R22.5"</span>, <span class="enumEntry">"11.00 R20"</span>, <span class="enumEntry">"12 R22.5"</span>, <span class="enumEntry">"12.00 R20"</span>, <span class="enumEntry">"12.00 R24"</span>, <span class="enumEntry">"12.5 R20"</span>, <span class="enumEntry">"13 R22.5"</span>, <span class="enumEntry">"14.00 R20"</span>, <span class="enumEntry">"14.5 R20"</span>, <span class="enumEntry">"16.00 R20"</span>, <span class="enumEntry">"205/75 R17.5"</span>, <span class="enumEntry">"215/75 R17.5"</span>, <span class="enumEntry">"225/70 R17.5"</span>, <span class="enumEntry">"225/75 R17.5"</span>, <span class="enumEntry">"235/75 R17.5"</span>, <span class="enumEntry">"245/70 R17.5"</span>, <span class="enumEntry">"245/70 R19.5"</span>, <span class="enumEntry">"255/70 R22.5"</span>, <span class="enumEntry">"265/70 R17.5"</span>, <span class="enumEntry">"265/70 R19.5"</span>, <span class="enumEntry">"275/70 R22.5"</span>, <span class="enumEntry">"275/80 R22.5"</span>, <span class="enumEntry">"285/60 R22.5"</span>, <span class="enumEntry">"285/70 R19.5"</span>, <span class="enumEntry">"295/55 R22.5"</span>, <span class="enumEntry">"295/60 R22.5"</span>, <span class="enumEntry">"295/80 R22.5"</span>, <span class="enumEntry">"305/60 R22.5"</span>, <span class="enumEntry">"305/70 R19.5"</span>, <span class="enumEntry">"305/70 R22.5"</span>, <span class="enumEntry">"305/75 R24.5"</span>, <span class="enumEntry">"315/45 R22.5"</span>, <span class="enumEntry">"315/60 R22.5"</span>, <span class="enumEntry">"315/70 R22.5"</span>, <span class="enumEntry">"315/80 R22.5"</span>, <span class="enumEntry">"325/95 R24"</span>, <span class="enumEntry">"335/80 R20"</span>, <span class="enumEntry">"355/50 R22.5"</span>, <span class="enumEntry">"365/70 R22.5"</span>, <span class="enumEntry">"365/80 R20"</span>, <span class="enumEntry">"365/85 R20"</span>, <span class="enumEntry">"375/45 R22.5"</span>, <span class="enumEntry">"375/50 R22.5"</span>, <span class="enumEntry">"375/90 R22.5"</span>, <span class="enumEntry">"385/55 R22.5"</span>, <span class="enumEntry">"385/65 R22.5"</span>, <span class="enumEntry">"395/85 R20"</span>, <span class="enumEntry">"425/65 R22.5"</span>, <span class="enumEntry">"495/45 R22.5"</span>, <span class="enumEntry">"525/65 R20.5"</span></div> <br> <span class="optionalEngineering">optional in Engineering mode</span> </td> @@ -1765,7 +1765,7 @@ div.filter span.hidden span.icon {max-width: 256px;max-height: 256px;background- <td class="xmltype">tns:AuxPSTechnologyType</td> <td class="comment"> <div class="declaration"> - Allowed values: <span class="enumEntry">"Small"</span>, <span class="enumEntry">"Small + ESS"</span>, <span class="enumEntry">"Small + visco clutch "</span>, <span class="enumEntry">"Small + mech. clutch"</span>, <span class="enumEntry">"Small + ESS + AMS"</span>, <span class="enumEntry">"Small + visco clutch + AMS"</span>, <span class="enumEntry">"Small + mech. clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 1-stage"</span>, <span class="enumEntry">"Medium Supply 1-stage + ESS"</span>, <span class="enumEntry">"Medium Supply 1-stage + visco clutch "</span>, <span class="enumEntry">"Medium Supply 1-stage + mech. clutch"</span>, <span class="enumEntry">"Medium Supply 1-stage + ESS + AMS"</span>, <span class="enumEntry">"Medium Supply 1-stage + visco clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 1-stage + mech. clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 2-stage"</span>, <span class="enumEntry">"Medium Supply 2-stage + ESS"</span>, <span class="enumEntry">"Medium Supply 2-stage + visco clutch "</span>, <span class="enumEntry">"Medium Supply 2-stage + mech. clutch"</span>, <span class="enumEntry">"Medium Supply 2-stage + ESS + AMS"</span>, <span class="enumEntry">"Medium Supply 2-stage + visco clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 2-stage + mech. clutch + AMS"</span>, <span class="enumEntry">"Large Supply"</span>, <span class="enumEntry">"Large Supply + ESS"</span>, <span class="enumEntry">"Large Supply + visco clutch "</span>, <span class="enumEntry">"Large Supply + mech. clutch"</span>, <span class="enumEntry">"Large Supply + ESS + AMS"</span>, <span class="enumEntry">"Large Supply + visco clutch + AMS"</span>, <span class="enumEntry">"Large Supply + mech. clutch + AMS"</span>, <span class="enumEntry">"Vacuum pump"</span></div> + Allowed values: <span class="enumEntry">"Small"</span>, <span class="enumEntry">"Small + ESS"</span>, <span class="enumEntry">"Small + visco clutch"</span>, <span class="enumEntry">"Small + mech. clutch"</span>, <span class="enumEntry">"Small + ESS + AMS"</span>, <span class="enumEntry">"Small + visco clutch + AMS"</span>, <span class="enumEntry">"Small + mech. clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 1-stage"</span>, <span class="enumEntry">"Medium Supply 1-stage + ESS"</span>, <span class="enumEntry">"Medium Supply 1-stage + visco clutch"</span>, <span class="enumEntry">"Medium Supply 1-stage + mech. clutch"</span>, <span class="enumEntry">"Medium Supply 1-stage + ESS + AMS"</span>, <span class="enumEntry">"Medium Supply 1-stage + visco clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 1-stage + mech. clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 2-stage"</span>, <span class="enumEntry">"Medium Supply 2-stage + ESS"</span>, <span class="enumEntry">"Medium Supply 2-stage + visco clutch"</span>, <span class="enumEntry">"Medium Supply 2-stage + mech. clutch"</span>, <span class="enumEntry">"Medium Supply 2-stage + ESS + AMS"</span>, <span class="enumEntry">"Medium Supply 2-stage + visco clutch + AMS"</span>, <span class="enumEntry">"Medium Supply 2-stage + mech. clutch + AMS"</span>, <span class="enumEntry">"Large Supply"</span>, <span class="enumEntry">"Large Supply + ESS"</span>, <span class="enumEntry">"Large Supply + visco clutch"</span>, <span class="enumEntry">"Large Supply + mech. clutch"</span>, <span class="enumEntry">"Large Supply + ESS + AMS"</span>, <span class="enumEntry">"Large Supply + visco clutch + AMS"</span>, <span class="enumEntry">"Large Supply + mech. clutch + AMS"</span>, <span class="enumEntry">"Vacuum pump"</span></div> <div class="engineering"></div> <br> </td> diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs index c5803432b4a36e04193e76f99a2b533b6a533ae1..c3e9d134a0414b6843d72084586a84b612c47d96 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 90f976b59604dd6d751d3406e5db9125d63bd304..9addc962a26e3f4b34f53534e03c6dbad8d9c2a7 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/VectoCore/Resources/Declaration/VAUX/Fan-Tech.csv b/VectoCore/VectoCore/Resources/Declaration/VAUX/Fan-Tech.csv index 2e1f9ace7e8cfb474600b9563d26d94e7514b040..10e393a595fddeb9d65763c1a564eccbe92cd7da 100644 --- a/VectoCore/VectoCore/Resources/Declaration/VAUX/Fan-Tech.csv +++ b/VectoCore/VectoCore/Resources/Declaration/VAUX/Fan-Tech.csv @@ -9,4 +9,4 @@ Belt driven or driven via transm. - Discrete step clutch , 103 Belt driven or driven via transm. - On/off clutch , 1089 , 1144 , 1033 , 1033 , 1678 Hydraulic driven - Variable displacement pump , 938 , 1155 , 832 , 917 , 1872 Hydraulic driven - Constant displacement pump , 1200 , 1400 , 1000 , 1100 , 2300 -Hydraulic driven - Electronically controlled , 700 , 800 , 600 , 600 , 1400 +Electrically driven - Electronically controlled , 700 , 800 , 600 , 600 , 1400 \ No newline at end of file diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.1.0.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.1.0.xsd index 6a79fb6d9297410757c06a342c2601c8aa32fda2..8df2c90fcff96b48cd641268ebc2000ab5e7bf44 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.1.0.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.1.0.xsd @@ -1268,28 +1268,28 @@ <xs:restriction base="xs:string"> <xs:enumeration value="Small"/> <xs:enumeration value="Small + ESS"/> - <xs:enumeration value="Small + visco clutch "/> + <xs:enumeration value="Small + visco clutch"/> <xs:enumeration value="Small + mech. clutch"/> <xs:enumeration value="Small + ESS + AMS"/> <xs:enumeration value="Small + visco clutch + AMS"/> <xs:enumeration value="Small + mech. clutch + AMS"/> <xs:enumeration value="Medium Supply 1-stage"/> <xs:enumeration value="Medium Supply 1-stage + ESS"/> - <xs:enumeration value="Medium Supply 1-stage + visco clutch "/> + <xs:enumeration value="Medium Supply 1-stage + visco clutch"/> <xs:enumeration value="Medium Supply 1-stage + mech. clutch"/> <xs:enumeration value="Medium Supply 1-stage + ESS + AMS"/> <xs:enumeration value="Medium Supply 1-stage + visco clutch + AMS"/> <xs:enumeration value="Medium Supply 1-stage + mech. clutch + AMS"/> <xs:enumeration value="Medium Supply 2-stage"/> <xs:enumeration value="Medium Supply 2-stage + ESS"/> - <xs:enumeration value="Medium Supply 2-stage + visco clutch "/> + <xs:enumeration value="Medium Supply 2-stage + visco clutch"/> <xs:enumeration value="Medium Supply 2-stage + mech. clutch"/> <xs:enumeration value="Medium Supply 2-stage + ESS + AMS"/> <xs:enumeration value="Medium Supply 2-stage + visco clutch + AMS"/> <xs:enumeration value="Medium Supply 2-stage + mech. clutch + AMS"/> <xs:enumeration value="Large Supply"/> <xs:enumeration value="Large Supply + ESS"/> - <xs:enumeration value="Large Supply + visco clutch "/> + <xs:enumeration value="Large Supply + visco clutch"/> <xs:enumeration value="Large Supply + mech. clutch"/> <xs:enumeration value="Large Supply + ESS + AMS"/> <xs:enumeration value="Large Supply + visco clutch + AMS"/> @@ -2221,7 +2221,6 @@ ToDo: -0.00 <xs:enumeration value="10.00 R20"/> <xs:enumeration value="11 R22.5"/> <xs:enumeration value="11.00 R20"/> - <xs:enumeration value="11.00 R22"/> <xs:enumeration value="12 R22.5"/> <xs:enumeration value="12.00 R20"/> <xs:enumeration value="12.00 R24"/> @@ -2269,7 +2268,7 @@ ToDo: -0.00 <xs:enumeration value="395/85 R20"/> <xs:enumeration value="425/65 R22.5"/> <xs:enumeration value="495/45 R22.5"/> - <xs:enumeration value="525/65 R22.5"/> + <xs:enumeration value="525/65 R20.5"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="TyreFzISOType"> diff --git a/VectoCore/VectoCore/Utils/XMLValidator.cs b/VectoCore/VectoCore/Utils/XMLValidator.cs index 6685d58442405759cae3df16c565011f0c43cf4b..220ae58dcda0daad0d0667a3052a1408df0a9b9c 100644 --- a/VectoCore/VectoCore/Utils/XMLValidator.cs +++ b/VectoCore/VectoCore/Utils/XMLValidator.cs @@ -76,20 +76,12 @@ namespace TUGraz.VectoCore.Utils public bool ValidateXML(XmlDocumentType docType) { _valid = true; - //try { - if (_doc.DocumentElement == null) { - throw new Exception("empty XML document"); - } - var version = _doc.DocumentElement.GetAttribute("schemaVersion"); - _doc.Schemas = GetXMLSchema(docType, version); - _doc.Validate(ValidationCallBack); - //} catch (Exception e) { - // _valid = false; - // _validationErrorAction(XmlSeverityType.Error, new ValidationEvent() { - - // Exception = e - // }); - //} + if (_doc.DocumentElement == null) { + throw new Exception("empty XML document"); + } + var version = _doc.DocumentElement.GetAttribute("schemaVersion"); + _doc.Schemas = GetXMLSchema(docType, version); + _doc.Validate(ValidationCallBack); return _valid; } diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs index 3a429221b67df3554b2a5afab384a0e20815f947..61a0645fdf3e034617af78430cc59693cc6d969b 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs @@ -341,7 +341,8 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration TestCase("Belt driven or driven via transm. - On/off clutch", new[] { 1089, 1144, 1033, 1033, 1678 }), TestCase("Hydraulic driven - Variable displacement pump", new[] { 938, 1155, 832, 917, 1872 }), TestCase("Hydraulic driven - Constant displacement pump", new[] { 1200, 1400, 1000, 1100, 2300 }), - TestCase("Hydraulic driven - Electronically controlled", new[] { 700, 800, 600, 600, 1400 }),] + TestCase("Electrically driven - Electronically controlled", new[] {700, 800, 600, 600, 1400})] + public void AuxFanTechTest(string technology, int[] expected) { for (var i = 0; i < _missions.Length; i++) { diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs index 929de813d7be1196ef47eb89adea42026b840633..0d88cb16b4c050591b0c9989b958e7308d8c2aa4 100644 --- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs @@ -29,10 +29,12 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Xml; +using System.Xml.XPath; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; @@ -49,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"; @@ -92,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; @@ -103,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() { @@ -147,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] @@ -182,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); @@ -214,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); @@ -224,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] @@ -247,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); @@ -255,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] @@ -278,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); @@ -288,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] @@ -310,7 +354,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual("Standard technology - LED headlights, all", aux3.Technology.First()); } - + [TestCase] public void TestVehicleInput() { @@ -388,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] @@ -476,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] @@ -517,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); @@ -539,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); @@ -573,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); @@ -611,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)); } } @@ -625,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(); @@ -636,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); @@ -734,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); @@ -771,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)); } } @@ -821,10 +851,101 @@ 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] + public void TestAuxFanTechTypes() + { + TestAuxTech(AuxiliaryType.Fan, GetEnumOptions("AuxFanTechnologyType", "1.0"), DeclarationData.Fan); + } + + [TestCase] + public void TestAuxElectricSystemTechTypes() + { + TestAuxTech(AuxiliaryType.ElectricSystem, GetEnumOptions("AuxESTechnologyType", "1.0"), + DeclarationData.ElectricSystem); + } + + [TestCase] + public void TestAuxSteeringPumpTechTypes() + { + TestAuxTech(AuxiliaryType.SteeringPump, GetEnumOptions("AuxSPTechnologyType", "1.0"), DeclarationData.SteeringPump); + } + + [TestCase] + public void TestAuxPneumaticSystemTechTypes() + { + TestAuxTech(AuxiliaryType.PneumaticSystem, GetEnumOptions("AuxPSTechnologyType", "1.0"), + DeclarationData.PneumaticSystem); + } + + [TestCase] + public void TestAuxHVACTechTypes() + { + TestAuxTech(AuxiliaryType.HVAC, GetEnumOptions("AuxHVACTechnologyType", "1.0"), + DeclarationData.HeatingVentilationAirConditioning); + } + + private string[] GetEnumOptions(string xmlType, string schemaVersion) + { + Stream resource; + var schemaFile = string.Format("VectoDeclarationDefinitions{0}.xsd", "." + schemaVersion); + try { + resource = RessourceHelper.LoadResourceAsStream(RessourceHelper.ResourceType.XMLSchema, schemaFile); + } catch (Exception e) { + throw new Exception(string.Format("Unknown XML schema! version: {0}, xsd: {1}", schemaVersion, schemaFile), e); + } + 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 retVal = new List<string>(); + foreach (var node in nodes) { + retVal.Add(node.ToString()); + } + return retVal.ToArray(); + } + + private void TestAuxTech(AuxiliaryType aux, string[] techs, IDeclarationAuxiliaryTable auxLookup) + { + foreach (var tech in techs) { + 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_Auxiliaries, XMLNames.ComponentDataWrapper, aux.ToString(), + XMLNames.Auxiliaries_Auxiliary_Technology), + manager); + technology.SetValue(tech); + var modified = XmlReader.Create(new StringReader(nav.OuterXml)); + + var inputDataProvider = new XMLDeclarationInputDataProvider(modified, + true); + var techInput = inputDataProvider.JobInputData.Vehicle.AuxiliaryInputData().Auxiliaries.Where(x => x.Type == aux) + .First().Technology.First(); + Assert.AreEqual(tech, techInput); + + Assert.IsTrue(auxLookup.GetTechnologies().Contains(techInput), "technology '{0}' for aux type '{1}' not known!", + techInput, aux); + } } } -} +} \ No newline at end of file