From b523b63afea7b4599a914de0a453ccb83adb0d55 Mon Sep 17 00:00:00 2001
From: "VKMTHD\\franzjosefkober" <franz.josef.kober@ivt.tugraz.at>
Date: Tue, 25 May 2021 18:52:22 +0200
Subject: [PATCH] added unit tests for the generated vif with primary vehicle
 as input

---
 .../Multistage/MultistageVehicleTest.cs       | 419 +++++++++++++++++-
 VectoCore/VectoCoreTest/VectoCoreTest.csproj  |  14 +-
 2 files changed, 407 insertions(+), 26 deletions(-)

diff --git a/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs
index 0cf136ffeb..4f8544b7a4 100644
--- a/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs
@@ -1,13 +1,21 @@
 using System;
+using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Xml;
+using System.Xml.Linq;
+using System.Xml.XPath;
 using Ninject;
 using NUnit.Framework;
+using TUGraz.VectoCommon.BusAuxiliaries;
 using TUGraz.VectoCommon.InputData;
 using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.FileIO.XML;
 using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
+using TUGraz.VectoCore.InputData.Impl;
+using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Impl;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.FileIO;
@@ -24,7 +32,9 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage
 	{
 		const string VIFDirPath = @"TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\";
 		const string InputDirPath = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\";
-		
+		private const string PrimaryInputDirPath = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\";
+
+
 		const string InputFilePath = InputDirPath  + "vecto_vehicle-stage_input_full-sample.xml";
 		const string VIFInputFile = VIFDirPath  + "vecto_multistage_primary_vehicle_stage_2_3.xml";
 
@@ -32,13 +42,13 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage
 		const string InputFilePathGroup41 = InputDirPath + "vecto_vehicle-stage_input_full-sample_group41.xml";
 		const string VIFInputFileGroup41 = VIFDirPath + "vecto_multistage_primary_vehicle_stage_2_3_group41.xml";
 
-		private const string vifResult = VIFDirPath + "vif_vehicle-sample.VIF_Report_3.xml";
+		const string vifResult = VIFDirPath + "vif_vehicle-sample.VIF_Report_3.xml";
+
 
+		public const string PrimaryBus = PrimaryInputDirPath + "vecto_vehicle-primary_heavyBus-sample.xml";
+		public const string PrimaryBus_SmartES = PrimaryInputDirPath + "vecto_vehicle-primary_heavyBusSmartES-sample.xml";
 
-		public const string PrimaryBus =
-			@"TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBus-sample.xml";
-		public const string PrimaryBus_SmartES =
-			@"TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBusSmartES-sample.xml";
+		const string PrimaryBusAdasV23 = PrimaryInputDirPath + "vecto_vehicle-primary_heavyBusSmartES_invalid_testdata.xml";
 
 
 		protected IXMLInputDataReader xmlInputReader;
@@ -95,8 +105,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage
 			}
 
 		}
-
-
+		
 		[TestCase()]
 		public void TestMultistageSimulationRun()
 		{
@@ -123,16 +132,11 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage
 			jobContainer.WaitFinished();
 			var progress = jobContainer.GetProgress();
 			Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat<Exception>(progress.Select(r => r.Value.Error)));
-			Assert.IsTrue(jobContainer.Runs.All(r => r.Success), String.Concat<Exception>(jobContainer.Runs.Select(r => r.ExecException)));
+			Assert.IsTrue(jobContainer.Runs.All(r => r.Success), string.Concat<Exception>(jobContainer.Runs.Select(r => r.ExecException)));
 		}
-
-
-
-
-
+		
 		[TestCase(PrimaryBus, TestName = "Multistage Write VIF Primary"),
-		TestCase(PrimaryBus_SmartES, TestName = "Multistage Write VIF Primary SmartES")
-		]
+		TestCase(PrimaryBus_SmartES, TestName = "Multistage Write VIF Primary SmartES")]
 		public void TestMultistageWritingVif(string primaryFile)
 		{
 			var inputData = xmlInputReader.Create(primaryFile);
@@ -175,7 +179,388 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage
 
 			var progress = jobContainer.GetProgress();
 			Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat<Exception>(progress.Select(r => r.Value.Error)));
-			Assert.IsTrue(jobContainer.Runs.All(r => r.Success), String.Concat<Exception>(jobContainer.Runs.Select(r => r.ExecException))); }
+			Assert.IsTrue(jobContainer.Runs.All(r => r.Success), string.Concat<Exception>(jobContainer.Runs.Select(r => r.ExecException)));
+		}
+
+		
+		[TestCase(PrimaryBusAdasV23, "vif_primary_bus_writing_test_adasv2.3.xml", TestName = "Multistage Write VIF Primary With ADAS v 2.3")]
+		public void TestPrimaryWritingVIF(string primaryFile, string outputFile)
+		{
+			var inputData = xmlInputReader.Create(primaryFile);
+
+			var writer = new FileOutputWriter(outputFile);
+
+			var xmlreport = new XMLDeclarationReportPrimaryVehicle(writer);
+			var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer, xmlreport)
+			{
+				WriteModalResults = true,
+				Validate = false
+			};
+
+			var jobContainer = new JobContainer(new SummaryDataContainer(writer));
+			jobContainer.AddRuns(factory);
+			xmlreport.DoWriteReport();
+			
+			//Set fake test result for validation and unit tests
+			SetTestResults(xmlreport.PrimaryVehicleReport);
+			writer.WriteReport(ReportType.DeclarationReportPrimaryVehicleXML, xmlreport.PrimaryVehicleReport);
+			
+			using (var xmlReader = XmlReader.Create(writer.XMLPrimaryVehicleReportName))
+			{
+				var validator = new XMLValidator(xmlReader);
+				Assert.IsTrue(validator.ValidateXML(VectoCore.Utils.XmlDocumentType.MultistageOutputData), validator.ValidationError);
+			}
+
+			ValidateVIFData(writer.XMLPrimaryVehicleReportName);
+		}
+
+
+
+		private void ValidateVIFData(string vifFilePath)
+		{
+			var vifReader = XmlReader.Create(vifFilePath);
+			var vifDataProvider = xmlInputReader.Create(vifReader) as IMultistageBusInputDataProvider;
+
+			var res = vifDataProvider.JobInputData.PrimaryVehicle;
+			TestVehicleData(res.Vehicle);
+			TestADASData(res.Vehicle.ADAS);
+			TestTorqueLimitsData(res.Vehicle.TorqueLimits);
+			TestComponentsData(res.Vehicle.Components);
+		}
+
+
+		#region Test Result VIF Primary Data
+
+		private void TestVehicleData(IVehicleDeclarationInputData vehicleData)
+		{
+			Assert.AreEqual("Generic Truck Manufacturer", vehicleData.Manufacturer);
+			Assert.AreEqual("Street, ZIP City", vehicleData.ManufacturerAddress);
+			Assert.AreEqual("Generic Model", vehicleData.Model);
+			Assert.AreEqual("VEH-1234567890", vehicleData.VIN);
+			Assert.AreEqual(DateTime.Parse("2017-02-15T11:00:00Z").ToUniversalTime(), vehicleData.Date);
+			Assert.AreEqual("M3", vehicleData.LegislativeCategory);
+			Assert.AreEqual("Bus", vehicleData.VehicleCategory.ToXMLFormat());
+			Assert.AreEqual(AxleConfiguration.AxleConfig_4x2, vehicleData.AxleConfiguration);
+			Assert.AreEqual(false, vehicleData.Articulated);
+			Assert.AreEqual(25000, vehicleData.GrossVehicleMassRating.Value());
+			Assert.AreEqual(600, vehicleData.EngineIdleSpeed.AsRPM);
+			Assert.AreEqual("Transmission Output Retarder", vehicleData.Components.RetarderInputData.Type.ToXMLFormat());
+			Assert.AreEqual(1.000, vehicleData.Components.RetarderInputData.Ratio);
+			Assert.AreEqual("Separate Angledrive", vehicleData.Components.AngledriveInputData.Type.ToXMLFormat());
+			Assert.AreEqual(false, vehicleData.ZeroEmissionVehicle);
+		}
+
+		private void TestADASData(IAdvancedDriverAssistantSystemDeclarationInputData adas)
+		{
+			Assert.AreEqual(true, adas.EngineStopStart);
+			Assert.AreEqual(EcoRollType.WithEngineStop, adas.EcoRoll);
+			Assert.AreEqual(PredictiveCruiseControlType.Option_1_2_3, adas.PredictiveCruiseControl);
+			Assert.AreEqual(false, adas.ATEcoRollReleaseLockupClutch);
+		}
+
+		private void TestTorqueLimitsData(IList<ITorqueLimitInputData> torqueLimits)
+		{
+			Assert.AreEqual(3, torqueLimits.Count);
+			Assert.AreEqual(6, torqueLimits[0].Gear);
+			Assert.AreEqual(1800, torqueLimits[0].MaxTorque.Value());
+			Assert.AreEqual(1, torqueLimits[1].Gear);
+			Assert.AreEqual(2500, torqueLimits[1].MaxTorque.Value());
+			Assert.AreEqual(12, torqueLimits[2].Gear);
+			Assert.AreEqual(1900, torqueLimits[2].MaxTorque.Value());
+		}
+
+		private void TestComponentsData(IVehicleComponentsDeclaration vehicleComponents)
+		{
+			TestEngineData(vehicleComponents.EngineInputData);
+			TestTransmissionData(vehicleComponents.GearboxInputData);
+			TestTorqueConverterData(vehicleComponents.TorqueConverterInputData);
+			TestAngledriveData(vehicleComponents.AngledriveInputData);
+			TestAxelgearData(vehicleComponents.AxleGearInputData);
+			TestAxelWheelsData(vehicleComponents.AxleWheels);
+			TestAuxiliarieData(vehicleComponents.BusAuxiliaries);
+		}
+
+		#region Test Engine Data
+		private void TestEngineData(IEngineDeclarationInputData engineData)
+		{
+			Assert.AreEqual("Generic Engine Manufacturer", engineData.Manufacturer);
+			Assert.AreEqual("Generic 40t Long Haul Truck Engine", engineData.Model);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", engineData.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-02-15T11:00:00Z").ToUniversalTime(), engineData.Date);
+			Assert.AreEqual("VectoEngine x.y", engineData.AppVersion);
+			Assert.AreEqual(12730.SI(Unit.SI.Cubic.Centi.Meter).Cast<CubicMeter>(), engineData.Displacement);
+			Assert.AreEqual(2200, engineData.RatedSpeedDeclared.AsRPM);
+			Assert.AreEqual(380000.SI<Watt>(), engineData.RatedPowerDeclared);
+			Assert.AreEqual(2400, engineData.MaxTorqueDeclared.Value());
+			Assert.AreEqual(WHRType.None, engineData.WHRType);// How ?!??!
+
+			TestEngineModes(engineData.EngineModes);
+		}
+
+		private void TestEngineModes(IList<IEngineModeDeclarationInputData> engineModes)
+		{
+			Assert.AreEqual(1, engineModes.Count);
+			Assert.AreEqual(560, engineModes[0].IdleSpeed.AsRPM);
+
+			var fullLoadCurve = engineModes[0].FullLoadCurve;
+			var entryIndex = 0;
+			Assert.IsTrue(CheckFullLoadAndDragCurveEntry("560.00", "1180.00", "-149.00", fullLoadCurve, ref entryIndex));
+			Assert.IsTrue(CheckFullLoadAndDragCurveEntry("600.00", "1282.00", "-148.00", fullLoadCurve, ref entryIndex));
+			Assert.IsTrue(CheckFullLoadAndDragCurveEntry("800.00", "1791.00", "-149.00", fullLoadCurve, ref entryIndex));
+			Assert.IsTrue(CheckFullLoadAndDragCurveEntry("1000.00", "2300.00", "-160.00", fullLoadCurve, ref entryIndex));
+			Assert.IsTrue(CheckFullLoadAndDragCurveEntry("1200.00", "2300.00", "-179.00", fullLoadCurve, ref entryIndex));
+			Assert.IsTrue(CheckFullLoadAndDragCurveEntry("1400.00", "2300.00", "-203.00", fullLoadCurve, ref entryIndex));
+			Assert.IsTrue(CheckFullLoadAndDragCurveEntry("1600.00", "2079.00", "-235.00", fullLoadCurve, ref entryIndex));
+			Assert.IsTrue(CheckFullLoadAndDragCurveEntry("1800.00", "1857.00", "-264.00", fullLoadCurve, ref entryIndex));
+			Assert.IsTrue(CheckFullLoadAndDragCurveEntry("2000.00", "1352.00", "-301.00", fullLoadCurve, ref entryIndex));
+			Assert.IsTrue(CheckFullLoadAndDragCurveEntry("2100.00", "1100.00", "-320.00", fullLoadCurve, ref entryIndex));
+
+			Assert.AreEqual(1, engineModes[0].Fuels.Count);
+			Assert.AreEqual(FuelType.NGCI, engineModes[0].Fuels.First().FuelType);
+		}
+		private bool CheckFullLoadAndDragCurveEntry(string engineSpeed, string maxTorque, string dragTorque, TableData loadCurve, ref int currentRow)
+		{
+			var result = engineSpeed == loadCurve.Rows[currentRow][0].ToString() &&
+						maxTorque == loadCurve.Rows[currentRow][1].ToString() &&
+						dragTorque == loadCurve.Rows[currentRow][2].ToString();
+
+			currentRow++;
+			return result;
+		}
+
+		#endregion
+		
+		#region Test Transmission Data
+
+		private void TestTransmissionData(IGearboxDeclarationInputData transmissionData)
+		{
+			Assert.AreEqual("Generic Gearbox Manufacturer", transmissionData.Manufacturer);
+			Assert.AreEqual("Generic 40t Long Haul Truck Gearbox", transmissionData.Model);
+			Assert.AreEqual(CertificationMethod.Option1, transmissionData.CertificationMethod);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", transmissionData.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-01-11T11:00:00Z").ToUniversalTime(), transmissionData.Date);
+			Assert.AreEqual("3.0.1", transmissionData.AppVersion);
+			Assert.AreEqual(GearboxType.ATSerial, transmissionData.Type);
+			Assert.AreEqual(12, transmissionData.Gears.Count);
+
+			var entryIndex = 0;
+			Assert.IsTrue(CheckTransmissionGear(1, 14.930, 1900, 2000, transmissionData.Gears[entryIndex], ref entryIndex));
+			Assert.IsTrue(CheckTransmissionGear(2, 11.640, 1900, 2000, transmissionData.Gears[entryIndex], ref entryIndex));
+			Assert.IsTrue(CheckTransmissionGear(3, 9.020, null, 2000, transmissionData.Gears[entryIndex], ref entryIndex));
+			Assert.IsTrue(CheckTransmissionGear(4, 7.040, null, 2000, transmissionData.Gears[entryIndex], ref entryIndex));
+			Assert.IsTrue(CheckTransmissionGear(5, 5.640, null, 2000, transmissionData.Gears[entryIndex], ref entryIndex));
+			Assert.IsTrue(CheckTransmissionGear(6, 4.400, null, 2000, transmissionData.Gears[entryIndex], ref entryIndex));
+			Assert.IsTrue(CheckTransmissionGear(7, 3.390, null, 2000, transmissionData.Gears[entryIndex], ref entryIndex));
+			Assert.IsTrue(CheckTransmissionGear(8, 2.650, null, 2000, transmissionData.Gears[entryIndex], ref entryIndex));
+			Assert.IsTrue(CheckTransmissionGear(9, 2.050, null, 2000, transmissionData.Gears[entryIndex], ref entryIndex));
+			Assert.IsTrue(CheckTransmissionGear(10, 1.600, null, 2000, transmissionData.Gears[entryIndex], ref entryIndex));
+			Assert.IsTrue(CheckTransmissionGear(11, 1.280, null, 2000, transmissionData.Gears[entryIndex], ref entryIndex));
+			Assert.IsTrue(CheckTransmissionGear(12, 1.000, null, null, transmissionData.Gears[entryIndex], ref entryIndex));
+		}
+
+		private bool CheckTransmissionGear(int gear, double ratio, int? maxTorque, double? maxSpeed, ITransmissionInputData entry, ref int entryIndex)
+		{
+			Assert.AreEqual(gear, entry.Gear);
+			Assert.AreEqual(ratio, entry.Ratio);
+
+			if (maxTorque == null)
+				Assert.IsNull(entry.MaxTorque);
+			else
+				Assert.AreEqual(((int)maxTorque).SI<NewtonMeter>(), entry.MaxTorque);
+
+			if (maxSpeed == null)
+				Assert.IsNull(entry.MaxInputSpeed);
+			else
+				Assert.AreEqual((double)maxSpeed, entry.MaxInputSpeed.AsRPM, 1e-6);
+
+			entryIndex++;
+			return true;
+		}
+
+		#endregion
+		
+		#region Torque Converter Data Test
+
+		private void TestTorqueConverterData(ITorqueConverterDeclarationInputData torqueConvData)
+		{
+			Assert.AreEqual("Some Manufacturer", torqueConvData.Manufacturer);
+			Assert.AreEqual("Some Model", torqueConvData.Model);
+			Assert.AreEqual(CertificationMethod.Measured, torqueConvData.CertificationMethod);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", torqueConvData.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-02-15T11:00:00Z").ToUniversalTime(), torqueConvData.Date);
+			Assert.AreEqual("TC CalcApp 123", torqueConvData.AppVersion);
+			Assert.AreEqual(null, torqueConvData.TCData);
+		}
+
+		#endregion
+
+		#region Angledrive Data Test
+
+		private void TestAngledriveData(IAngledriveInputData angledriveData)
+		{
+			Assert.AreEqual("Generic Gearbox Manufacturer", angledriveData.Manufacturer);
+			Assert.AreEqual("Generic 40t Long Haul Truck Gearbox", angledriveData.Model);
+			Assert.AreEqual(CertificationMethod.Option1, angledriveData.CertificationMethod);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", angledriveData.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-01-11T11:00:00Z").ToUniversalTime(), angledriveData.Date);
+			Assert.AreEqual("3.0.1", angledriveData.AppVersion);
+			Assert.AreEqual(2.345, angledriveData.Ratio);
+		}
+
+		#endregion
+
+		#region Axelgear Test
+		private void TestAxelgearData(IAxleGearInputData axelgearData)
+		{
+			Assert.AreEqual("Generic Gearbox Manufacturer", axelgearData.Manufacturer);
+			Assert.AreEqual("Generic 40t Long Haul Truck AxleGear", axelgearData.Model);
+			Assert.AreEqual(CertificationMethod.Measured, axelgearData.CertificationMethod);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", axelgearData.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-01-11T11:00:00Z").ToUniversalTime(), axelgearData.Date);
+			Assert.AreEqual("3.0.1", axelgearData.AppVersion);
+			Assert.AreEqual(AxleLineType.SinglePortalAxle, axelgearData.LineType);
+			Assert.AreEqual(2.590, axelgearData.Ratio);
+		}
+
+		#endregion
+
+		#region AxleWheels Data Test
+		private void TestAxelWheelsData(IAxlesDeclarationInputData axelWheels)
+		{
+			Assert.AreEqual(2, axelWheels.AxlesDeclaration.Count);
+
+			var entry = axelWheels.AxlesDeclaration[0];
+			Assert.AreEqual(AxleType.VehicleNonDriven, entry.AxleType);
+			Assert.AreEqual(false, entry.TwinTyres);
+
+			var tyre1 = entry.Tyre;
+			Assert.AreEqual("Generic Wheels Manufacturer", tyre1.Manufacturer);
+			Assert.AreEqual("Generic Wheel", tyre1.Model);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", tyre1.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-01-11T14:00:00Z").ToUniversalTime(), tyre1.Date);
+			Assert.AreEqual("Tyre Generation App 1.0", tyre1.AppVersion);
+			Assert.AreEqual("315/70 R22.5", tyre1.Dimension);
+			Assert.AreEqual(0.0055, tyre1.RollResistanceCoefficient);
+			Assert.AreEqual(31300, tyre1.TyreTestLoad.Value());//85% of the maximum tyre payload
+
+			Assert.AreEqual("#WHL-5432198760-315-70-R22.5", tyre1.DigestValue.Reference);
+			Assert.AreEqual("urn:vecto:xml:2017:canonicalization", tyre1.DigestValue.CanonicalizationMethods[0]);
+			Assert.AreEqual("http://www.w3.org/2001/10/xml-exc-c14n#", tyre1.DigestValue.CanonicalizationMethods[1]);
+			Assert.AreEqual("http://www.w3.org/2001/04/xmlenc#sha256", tyre1.DigestValue.DigestMethod);
+			Assert.AreEqual("4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=", tyre1.DigestValue.DigestValue);
+
+			entry = axelWheels.AxlesDeclaration[1];
+			Assert.AreEqual(AxleType.VehicleDriven, entry.AxleType);
+			Assert.AreEqual(true, entry.TwinTyres);
+
+			var tyre2 = entry.Tyre;
+			Assert.AreEqual("Generic Wheels Manufacturer", tyre2.Manufacturer);
+			Assert.AreEqual("Generic Wheel", tyre2.Model);
+			Assert.AreEqual("e12*0815/8051*2017/05E0000*00", tyre2.CertificationNumber);
+			Assert.AreEqual(DateTime.Parse("2017-01-11T14:00:00Z").ToUniversalTime(), tyre2.Date);
+			Assert.AreEqual("Tyre Generation App 1.0", tyre2.AppVersion);
+			Assert.AreEqual("315/70 R22.5", tyre2.Dimension);
+			Assert.AreEqual(0.0063, tyre2.RollResistanceCoefficient);
+			Assert.AreEqual(31300, tyre2.TyreTestLoad.Value());
+
+			Assert.AreEqual("#WHL-5432198760-315-70-R22.5", tyre2.DigestValue.Reference);
+			Assert.AreEqual("urn:vecto:xml:2017:canonicalization", tyre2.DigestValue.CanonicalizationMethods[0]);
+			Assert.AreEqual("http://www.w3.org/2001/10/xml-exc-c14n#", tyre2.DigestValue.CanonicalizationMethods[1]);
+			Assert.AreEqual("http://www.w3.org/2001/04/xmlenc#sha256", tyre2.DigestValue.DigestMethod);
+			Assert.AreEqual("KljvtvGUUQ/L7MiLVAqU+bckL5PNDNNwdeLH9kUVrfM=", tyre2.DigestValue.DigestValue);
+		}
+
+		#endregion
+
+		#region Auxiliaries Test
+		private void TestAuxiliarieData(IBusAuxiliariesDeclarationData aux)
+		{
+			Assert.AreEqual("Hydraulic driven - Constant displacement pump", aux.FanTechnology);
+
+			Assert.AreEqual(1, aux.SteeringPumpTechnology.Count);
+			Assert.AreEqual("Variable displacement elec. controlled", aux.SteeringPumpTechnology[0]);
+			
+			Assert.AreEqual(AlternatorType.Smart, aux.ElectricSupply.AlternatorTechnology);
+
+			Assert.AreEqual(1, aux.ElectricSupply.Alternators.Count);
+			Assert.AreEqual(300.SI<Ampere>(), aux.ElectricSupply.Alternators[0].RatedCurrent);
+			Assert.AreEqual(48.SI<Volt>(), aux.ElectricSupply.Alternators[0].RatedVoltage);
+			
+			Assert.AreEqual(2, aux.ElectricSupply.ElectricStorage.Count);
+
+			var battery = aux.ElectricSupply.ElectricStorage[0] as BusAuxBatteryInputData;
+			Assert.IsNotNull(battery);
+			Assert.AreEqual("li-ion battery - high power", battery.Technology);
+			Assert.AreEqual(5.SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(), battery.Capacity);
+			Assert.AreEqual(48.SI<Volt>(), battery.Voltage);
+
+			var capacitor = aux.ElectricSupply.ElectricStorage[1] as BusAuxCapacitorInputData;
+			Assert.IsNotNull(capacitor);
+			Assert.AreEqual("with DCDC converter", capacitor.Technology);
+			Assert.AreEqual(30.SI<Farad>(), capacitor.Capacity);
+			Assert.AreEqual(3.SI<Volt>(), capacitor.Voltage);
+			
+			Assert.AreEqual("Large Supply 2-stage", aux.PneumaticSupply.CompressorSize);//SizeOfAirSupply
+			Assert.AreEqual(CompressorDrive.mechanically, aux.PneumaticSupply.CompressorDrive);
+			Assert.AreEqual("none", aux.PneumaticSupply.Clutch);
+			Assert.AreEqual(1.000, aux.PneumaticSupply.Ratio);
+			Assert.AreEqual(false, aux.PneumaticSupply.SmartAirCompression);
+			Assert.AreEqual(false, aux.PneumaticSupply.SmartRegeneration);
+			Assert.AreEqual(ConsumerTechnology.Electrically, aux.PneumaticConsumers.AirsuspensionControl);
+			Assert.AreEqual(ConsumerTechnology.Pneumatically, aux.PneumaticConsumers.AdBlueDosing); //true
+
+			Assert.AreEqual(true, aux.HVACAux.AdjustableCoolantThermostat);
+			Assert.AreEqual(true, aux.HVACAux.EngineWasteGasHeatExchanger);
+		}
+
+		#endregion
+
+		#endregion
+
+		#region Set Result Entry For Testing only
+
+		private void SetTestResults(XDocument xDocument)
+		{
+			var results = xDocument.XPathSelectElement(".//*[local-name()='Results']");
+			results.ReplaceWith(GetTempResultElement());
+		}
+		
+		private XElement GetTempResultElement()
+		{
+			XNamespace tns = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1";
+
+			var results = new XElement(tns + XMLNames.Report_Results);
+			results.AddFirst(new XElement(tns + XMLNames.Report_Result_Status, "success"));
+
+			results.Add(new XElement(tns + XMLNames.Report_Result_Result,
+				new XAttribute(XMLNames.Report_Result_Status_Attr, "success"),
+				new XElement(tns + XMLNames.Report_Vehicle_VehicleGroup, "P31SD"),
+				new XElement(tns + XMLNames.Report_Result_Mission, "Heavy Urban"),
+				new XElement(tns +
+							XMLNames.Report_ResultEntry_SimulationParameters,
+					new XElement(tns +
+								XMLNames.Report_ResultEntry_TotalVehicleMass,
+						XMLHelper.ValueAsUnit(13098.63, XMLNames.Unit_kg, 2)),
+					new XElement(tns + XMLNames.Report_Result_Payload, XMLHelper.ValueAsUnit(1123.63, XMLNames.Unit_kg, 2)),
+					new XElement(tns + XMLNames.Report_ResultEntry_PassengerCount, 16.52),
+					new XElement(tns + XMLNames.Report_Result_FuelMode, XMLNames.Report_Result_FuelMode_Val_Single)
+				),
+				new XElement(tns +
+					XMLNames.Report_Results_Fuel,
+					new XAttribute(XMLNames.Report_Results_Fuel_Type_Attr, "Diesel CI"),
+					new XElement(tns +
+								XMLNames.Report_Result_EnergyConsumption,
+						new XAttribute(XMLNames.Report_Results_Unit_Attr, "MJ/km"), 16.93598)),
+
+				new XElement(tns+ 
+					XMLNames.Report_Results_CO2, new XAttribute(XMLNames.Report_Results_Unit_Attr, "g/km"), 1862.57
+				)));
+
+			return results;
+
+		}
+
+		#endregion
 
 	}
 }
diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
index af49f1d725..c9e395ae57 100644
--- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
@@ -5519,28 +5519,24 @@
     <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\primary_heavyBus group P39_40_nonSmart_ESS.RSLT_PIF.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-medium_lorryFWD-sample.xml">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
-    <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-medium_lorry-sample.xml">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </Content>
     <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-completed_heavyBus-sample.xml">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
       <SubType>Designer</SubType>
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBus-sample.xml">
+    <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-medium_lorry-sample.xml" />
+    <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-medium_lorryFWD-sample.xml">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
-    <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-medium_lorry-sample.xml" />
-    <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-medium_lorryFWD-sample.xml" />
     <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBus-sample.xml">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
     <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBusSmartES-sample.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
+    <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBusSmartES_invalid_testdata.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
     <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_full-sample.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-- 
GitLab