From 32ebdb001c05c617dc2cac5115673fc16b398199 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Tue, 12 Jul 2022 16:43:54 +0200
Subject: [PATCH] renaming files from VifReport to VehicleInformationFile using
 xmlvalidator from vectoCore in testcase start writing VIF

---
 ...eport.cs => IXMLVehicleInformationFile.cs} |  2 +-
 ...t.cs => AbstractVehicleInformationFile.cs} |  8 +-
 .../Components/VIFAdasType.cs                 | 11 +--
 .../IVIFReportFactory.cs                      |  2 +-
 .../VIFNinjectModule.cs                       | 13 +++-
 .../VehicleInformationFile.cs}                | 25 +++---
 .../VehicleParameterGroup.cs                  |  8 +-
 .../XMLPrimaryBusVehicleReport.cs             |  2 +-
 .../OutputData/XML/XMLDeclarationReport.cs    | 12 +--
 .../XML/XMLDeclarationReportPrimaryVehicle.cs | 16 ++--
 .../XML/XMLDeclarationReport_0_9.cs           | 33 ++++----
 .../Reports/ManufacturerReportWriterTest.cs   | 77 +++----------------
 .../VectoMockup/Ninject/VIFMockupModule.cs    | 17 +++-
 .../Reports/MockupReportFactory.cs            |  6 +-
 .../VectoMockup/Reports/MockupVIFReport.cs    |  4 +-
 ...ort.cs => MockupVehicleInformationFile.cs} | 20 ++---
 .../XMLDeclarationMockupPrimaryReport.cs      | 16 ++--
 .../MockupFollowUpSimulatorFactoryCreator.cs  |  4 +-
 .../MockupSimulatorFactories.cs               |  1 +
 19 files changed, 126 insertions(+), 151 deletions(-)
 rename VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/{IXMLPrimaryVehicleReport.cs => IXMLVehicleInformationFile.cs} (91%)
 rename VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/{AbstractVIFReport.cs => AbstractVehicleInformationFile.cs} (94%)
 rename VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/{VIFReport/PrimaryVIFReport.cs => VehicleInformationFile/VehicleInformationFile.cs} (56%)
 rename VectoMockup/VectoMockup/Reports/{MockupPrimaryReport.cs => MockupVehicleInformationFile.cs} (69%)

diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/IXMLPrimaryVehicleReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/IXMLVehicleInformationFile.cs
similarity index 91%
rename from VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/IXMLPrimaryVehicleReport.cs
rename to VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/IXMLVehicleInformationFile.cs
index 04ff8f3957..7cd02a7241 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/IXMLPrimaryVehicleReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/IXMLVehicleInformationFile.cs
@@ -5,7 +5,7 @@ using TUGraz.VectoCore.Models.Simulation.Data;
 
 namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile
 {
-	public interface IXMLPrimaryVehicleReport
+	public interface IXMLVehicleInformationFile
 	{
 		void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes);
 		void WriteResult(XMLDeclarationReport.ResultEntry result);
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVehicleInformationFile.cs
similarity index 94%
rename from VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFReport.cs
rename to VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVehicleInformationFile.cs
index babfcaab4a..39a520e56d 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVIFReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/AbstractVehicleInformationFile.cs
@@ -13,10 +13,10 @@ using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1
 {
-	public abstract class AbstractVIFReport : IXMLPrimaryVehicleReport
+	public abstract class AbstractVehicleInformationFile : IXMLVehicleInformationFile
 	{
 		private XDocument _report;
-		private XNamespace _tns;
+		protected XNamespace _tns;
 
 		protected readonly IVIFReportFactory _vifFactory;
 
@@ -38,7 +38,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 		protected XElement Results { get; set; }
 	
 
-		protected AbstractVIFReport(IVIFReportFactory vifFactory)
+		protected AbstractVehicleInformationFile(IVIFReportFactory vifFactory)
 		{
 			_vifFactory = vifFactory;
 		}
@@ -68,7 +68,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 				new XAttribute(XNamespace.Xmlns + "v2.0", _v20),
 				new XAttribute(XNamespace.Xmlns + "v2.1", _v21),
 				new XAttribute(XNamespace.Xmlns + "v2.3", _v23),
-				new XAttribute(XNamespace.Xmlns + "v2.8", _v24),
+				new XAttribute(XNamespace.Xmlns + "v2.4", _v24),
 				new XAttribute(_xsi + "schemaLocation", $"{_tns.NamespaceName} " + @"V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"),
 				new XAttribute("xmlns", _tns),
 
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAdasType.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAdasType.cs
index 85508575b0..31619a6fe5 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAdasType.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/Components/VIFAdasType.cs
@@ -21,11 +21,12 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			if (adas == null)
 				return null;
 
-			return new XElement(_vif + XMLNames.Vehicle_ADAS,
-				new XElement(_vif + XMLNames.Vehicle_ADAS_EngineStopStart, adas.EngineStopStart),
-				new XElement(_vif +  XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop, adas.EcoRoll == EcoRollType.WithoutEngineStop),
-				new XElement(_vif + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, adas.EcoRoll == EcoRollType.WithEngineStop),
-				new XElement(_vif + XMLNames.Vehicle_ADAS_PCC, adas.PredictiveCruiseControl.ToXMLFormat())); 
+			return new XElement(_vif + XMLNames.Vehicle_ADAS, 
+				new XAttribute("xmlns", _v24),
+				new XElement(_v24 + XMLNames.Vehicle_ADAS_EngineStopStart, adas.EngineStopStart),
+				new XElement(_v24 +  XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop, adas.EcoRoll == EcoRollType.WithoutEngineStop),
+				new XElement(_v24 + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, adas.EcoRoll == EcoRollType.WithEngineStop),
+				new XElement(_v24 + XMLNames.Vehicle_ADAS_PCC, adas.PredictiveCruiseControl.ToXMLFormat())); 
 		}
 
 		#endregion
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs
index 2794eebb2c..b960ee5b26 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/IVIFReportFactory.cs
@@ -8,7 +8,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 {
 	public interface IVIFReportFactory
 	{
-		IXMLPrimaryVehicleReport GetVIFReport(VehicleCategory vehicleType, VectoSimulationJobType jobType,
+		IXMLVehicleInformationFile GetVIFReport(VehicleCategory vehicleType, VectoSimulationJobType jobType,
 			ArchitectureID archId, bool exempted, bool iepc, bool ihpc);
 
 
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs
index 604f9e9b5a..c3eeacd671 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFNinjectModule.cs
@@ -1,10 +1,13 @@
 using Ninject.Activation;
 using Ninject.Extensions.ContextPreservation;
 using Ninject.Extensions.Factory;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportGroupWriter;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1.Components;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1.VIFReport;
 using TUGraz.VectoCore.Utils.Ninject;
 
 namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1
@@ -20,7 +23,15 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			Bind<IVIFReportFactory>().ToFactory(() => new CombineArgumentsToNameInstanceProvider(nameCombinationMethod,
 				6, 6, typeof(IVIFReportFactory).GetMethod(nameof(IVIFReportFactory.GetVIFReport)))).InSingletonScope();
 
-			
+			Bind<IXMLVehicleInformationFile>().To<Conventional_PrimaryBus_VIF>().Named(nameCombinationMethod.Invoke(
+				ToParams(VehicleCategoryHelper.PrimaryBus,
+					VectoSimulationJobType.ConventionalVehicle,
+					ArchitectureID.UNKNOWN,
+					false,
+					false,
+					false)));
+
+
 			#region VehicleTypes
 			
 			Bind<IXmlTypeWriter>().To<ConventionalVehicleType>().When(AccessedViaVIFFactory)
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFReport/PrimaryVIFReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleInformationFile/VehicleInformationFile.cs
similarity index 56%
rename from VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFReport/PrimaryVIFReport.cs
rename to VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleInformationFile/VehicleInformationFile.cs
index 01c6ab60c1..25c5ce35c5 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VIFReport/PrimaryVIFReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleInformationFile/VehicleInformationFile.cs
@@ -7,10 +7,14 @@ using TUGraz.VectoCommon.InputData;
 
 namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1.VIFReport
 {
-	internal class PrimaryVIFReportBase : AbstractVIFReport
+	internal class VehicleInformationFile : AbstractVehicleInformationFile
 	{
 		private string _outputDataType;
-		public PrimaryVIFReportBase(IVIFReportFactory vifFactory) : base(vifFactory) { }
+
+		public VehicleInformationFile(IVIFReportFactory vifFactory) : base(vifFactory)
+		{
+			_tns = VIF;
+		}
 
 		#region Overrides of AbstractVIFReport
 
@@ -18,23 +22,16 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 
 		public override void InitializeVehicleData(IDeclarationInputDataProvider inputData)
 		{
-
-
-
-			//Vehicle
-			//InputDataSignature
-			//ManufacturerRecordSignature
-			//Results
-			//ApplicationInformation
-
-
-			throw new NotImplementedException();
+			Vehicle = _vifFactory.GetConventionalVehicleType().GetElement(inputData);
 		}
 
 		#endregion
 	}
 
-	
+	internal class Conventional_PrimaryBus_VIF : VehicleInformationFile
+	{
+		public Conventional_PrimaryBus_VIF(IVIFReportFactory vifFactory) : base(vifFactory) { }
+	}
 
 
 }
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleParameterGroup.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleParameterGroup.cs
index d71b20a79d..98ef8a1804 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleParameterGroup.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/VehicleInformationFile_0_1/VehicleParameterGroup.cs
@@ -112,17 +112,17 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF
 			var vehicle = inputData.JobInputData.Vehicle;
 
 			var result = new List<XElement> {
-				new XElement(_vif + XMLNames.ManufacturerAddressPrimaryVehicle, vehicle.Manufacturer),
+				new XElement(_vif + XMLNames.ManufacturerPrimaryVehicle, vehicle.Manufacturer),
 				new XElement(_vif + XMLNames.ManufacturerAddressPrimaryVehicle, vehicle.ManufacturerAddress),
-				new XElement(_vif +XMLNames.Component_Model, vehicle.Model),
+				new XElement(_vif + XMLNames.Component_Model, vehicle.Model),
 				new XElement(_vif + XMLNames.Vehicle_VIN, vehicle.VIN),
 				new XElement(_vif + XMLNames.Component_Date, XmlConvert.ToString(vehicle.Date, XmlDateTimeSerializationMode.Utc)),
 				new XElement(_vif + XMLNames.Vehicle_LegislativeCategory, vehicle.LegislativeClass.ToXMLFormat()),
 				new XElement(_vif + XMLNames.ChassisConfiguration, vehicle.VehicleCategory.ToXMLFormat()),
 				new XElement(_vif + XMLNames.Vehicle_AxleConfiguration, vehicle.AxleConfiguration.ToXMLFormat()),
 				new XElement(_vif + XMLNames.Vehicle_Articulated, vehicle.Articulated),
-				new XElement(_vif + XMLNames.TPMLM, vehicle.GrossVehicleMassRating.ToXMLFormat()),
-				new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.ToXMLFormat()),
+				new XElement(_vif + XMLNames.TPMLM, vehicle.GrossVehicleMassRating.ToXMLFormat(0)),
+				new XElement(_vif + XMLNames.Vehicle_IdlingSpeed, vehicle.EngineIdleSpeed.AsRPM.ToXMLFormat(0)),
 				new XElement(_vif + XMLNames.Vehicle_RetarderType, vehicle.Components.RetarderInputData.Type.ToXMLFormat()),
 				new XElement(_vif + XMLNames.Vehicle_RetarderRatio, vehicle.Components.RetarderInputData.Ratio.ToXMLFormat(3)),
 				new XElement(_vif + XMLNames.Vehicle_AngledriveType, vehicle.Components.AngledriveInputData.Type.ToXMLFormat()),
diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs
index 2222b88a79..8b55762dc1 100644
--- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs
@@ -25,7 +25,7 @@ using TUGraz.VectoHashing;
 
 namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile
 {
-	public class XMLPrimaryBusVehicleReport : IXMLPrimaryVehicleReport
+	public class XMLPrimaryBusVehicleReport : IXMLVehicleInformationFile
 	{
 		public XNamespace Tns => tns;
 		protected XNamespace tns = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1";
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
index ed6af04120..7cdfff60bd 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport.cs
@@ -255,12 +255,12 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 		protected virtual void InstantiateReports(VectoRunData modelData)
 		{
-			if (modelData.Exempted) {
-				ManufacturerRpt = new XMLManufacturerReportExemptedTruck();
-			} else {
-				ManufacturerRpt = new XMLManufacturerReportTruck();
-			}
-			CustomerRpt = new XMLCustomerReport();
+			//if (modelData.Exempted) {
+			//	ManufacturerRpt = new XMLManufacturerReportExemptedTruck();
+			//} else {
+			//	ManufacturerRpt = new XMLManufacturerReportTruck();
+			//}
+			//CustomerRpt = new XMLCustomerReport();
 		}
 
 		private static IDictionary<Tuple<MissionType, LoadingType>, double> ZeroWeighting =>
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs
index 36bdb48f59..a50a01b0df 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportPrimaryVehicle.cs
@@ -10,7 +10,7 @@ using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
 namespace TUGraz.VectoCore.OutputData.XML {
 	public class XMLDeclarationReportPrimaryVehicle : XMLDeclarationReport
 	{
-		protected IXMLPrimaryVehicleReport PrimaryReport;
+		protected IXMLVehicleInformationFile VehicleInformationFile;
 
 
 		public XMLDeclarationReportPrimaryVehicle(IReportWriter writer, bool writePIF = false) : base(writer)
@@ -19,7 +19,7 @@ namespace TUGraz.VectoCore.OutputData.XML {
 
 		public override XDocument CustomerReport => null;
 
-		public override XDocument PrimaryVehicleReport => PrimaryReport?.Report;
+		public override XDocument PrimaryVehicleReport => VehicleInformationFile?.Report;
 
 
 		#region Overrides of XMLDeclarationReport
@@ -29,12 +29,12 @@ namespace TUGraz.VectoCore.OutputData.XML {
 			if (modelData.Exempted) {
 				ManufacturerRpt = new XMLManufacturerReportExeptedPrimaryBus();
 				CustomerRpt = new XMLCustomerReportExemptedPrimaryBus();
-				PrimaryReport = new XMLExemptedPrimaryBusVehicleReport();
+				VehicleInformationFile = new XMLExemptedPrimaryBusVehicleReport();
 
 			} else {
 				ManufacturerRpt = new XMLManufacturerReportPrimaryBus();
 				CustomerRpt = new XMLCustomerReport();
-				PrimaryReport = new XMLPrimaryBusVehicleReport();
+				VehicleInformationFile = new XMLPrimaryBusVehicleReport();
 			}
 
 
@@ -43,7 +43,7 @@ namespace TUGraz.VectoCore.OutputData.XML {
 		public override void InitializeReport(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
 		{
 			base.InitializeReport(modelData, fuelModes);
-			PrimaryReport.Initialize(modelData,fuelModes);
+			VehicleInformationFile.Initialize(modelData,fuelModes);
 		}
 
 
@@ -51,7 +51,7 @@ namespace TUGraz.VectoCore.OutputData.XML {
 		protected override void WriteResult(ResultEntry result)
 		{
 			base.WriteResult(result);
-			PrimaryReport.WriteResult(result);
+			VehicleInformationFile.WriteResult(result);
 		}
 
 		protected override void GenerateReports()
@@ -59,7 +59,7 @@ namespace TUGraz.VectoCore.OutputData.XML {
 			ManufacturerRpt.GenerateReport();
 			var fullReportHash = GetSignature(ManufacturerRpt.Report);
 			CustomerRpt.GenerateReport(fullReportHash);
-			PrimaryReport.GenerateReport(fullReportHash);
+			VehicleInformationFile.GenerateReport(fullReportHash);
 		}
 
 	
@@ -67,7 +67,7 @@ namespace TUGraz.VectoCore.OutputData.XML {
 		protected override void OutputReports()
 		{
 			Writer.WriteReport(ReportType.DeclarationReportManufacturerXML, ManufacturerRpt.Report);
-			Writer.WriteReport(ReportType.DeclarationReportPrimaryVehicleXML, PrimaryReport.Report);
+			Writer.WriteReport(ReportType.DeclarationReportPrimaryVehicleXML, VehicleInformationFile.Report);
 		}
 
 		#endregion
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs
index 98ebbacb9b..cdec409912 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReport_0_9.cs
@@ -13,21 +13,25 @@ using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1;
 
 namespace TUGraz.VectoCore.OutputData.XML
 {
 	public class XMLDeclarationReportPrimaryVehicle_09 : XMLDeclarationReportPrimaryVehicle
 	{
-		private readonly ICustomerInformationFileFactory _cifFactory;
+		//private readonly ICustomerInformationFileFactory _cifFactory;
 		private readonly IManufacturerReportFactory _mrfFactory;
+		private readonly IVIFReportFactory _vifFactory;
 
 		public XMLDeclarationReportPrimaryVehicle_09(IReportWriter writer,
 			IManufacturerReportFactory mrfFactory,
 			ICustomerInformationFileFactory cifFactory,
+			IVIFReportFactory vifFactory,
 			bool writePIF = false) : base(writer, writePIF)
 		{
 			_mrfFactory = mrfFactory;
-			_cifFactory = cifFactory;
+			//_cifFactory = cifFactory;
+			_vifFactory = vifFactory;
 		}
 
 
@@ -40,25 +44,26 @@ namespace TUGraz.VectoCore.OutputData.XML
 			var ihpc =
 				vehicleData.Components?.ElectricMachines?.Entries?.Count(e => e.ElectricMachine.IHPCType != "None") > 0;
 
-			if (modelData.Exempted) {
-				PrimaryReport = new XMLExemptedPrimaryBusVehicleReport();
-			}
-			PrimaryReport = new XMLPrimaryBusVehicleReport();
+			//if (modelData.Exempted) {
+			//	PrimaryReport = new XMLExemptedPrimaryBusVehicleReport();
+			//}
+			//PrimaryReport = new XMLPrimaryBusVehicleReport();
 			
-			//PrimaryRpt = _vifFactory.GetVIF(vehicleData.VehicleCategory,
-			//	vehicleData.VehicleType,
-			//	vehicleData.ArchitectureID,
-			//	vehicleData.ExemptedVehicle,
-			//	iepc,
-			//	ihpc);
-
-
 			ManufacturerRpt = _mrfFactory.GetManufacturerReport(vehicleData.VehicleCategory,
 				vehicleData.VehicleType,
 				vehicleData.ArchitectureID,
 				vehicleData.ExemptedVehicle,
 				iepc,
 				ihpc);
+
+			VehicleInformationFile = _vifFactory.GetVIFReport(vehicleData.VehicleCategory,
+                vehicleData.VehicleType,
+                vehicleData.ArchitectureID,
+                vehicleData.ExemptedVehicle,
+                iepc,
+                ihpc);
+
+
 		}
 
 		protected override void DoStoreResult(ResultEntry entry, VectoRunData runData, IModalDataContainer modData)
diff --git a/VectoCore/VectoCoreTest/XML/Reports/ManufacturerReportWriterTest.cs b/VectoCore/VectoCoreTest/XML/Reports/ManufacturerReportWriterTest.cs
index 3164932ab3..01d383c5c5 100644
--- a/VectoCore/VectoCoreTest/XML/Reports/ManufacturerReportWriterTest.cs
+++ b/VectoCore/VectoCoreTest/XML/Reports/ManufacturerReportWriterTest.cs
@@ -28,6 +28,7 @@ using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.Manu
 using TUGraz.VectoCore.Tests.Integration.CompletedBus;
 using TUGraz.VectoCore.Tests.Models.Simulation;
 using TUGraz.VectoCore.Utils;
+using XmlDocumentType = TUGraz.VectoCore.Utils.XmlDocumentType;
 
 namespace TUGraz.VectoCore.Tests.XML.Reports
 {
@@ -100,57 +101,14 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 			var error = false;
 
 			try {
-
-				var schemaSet = new XmlSchemaSet() {
-					XmlResolver = new XmlUrlResolver()
-				};
-
-				XmlSchema schema;
-				using (var reader = XmlReader.Create(
-							Path.GetFullPath(Path.Combine(xsdPath, "VectoOutputManufacturer.0.9.xsd"))))
-				{
-					schema = XmlSchema.Read(reader, null);
-				}
-
-				schemaSet.Add(schema);
-
-				using (var reader = XmlReader.Create(
-							Path.GetFullPath(Path.Combine(xsdPath, "VectoOutputCustomer.0.9.xsd"))))
-				{
-					schema = XmlSchema.Read(reader, null);
-				}
-
-				schemaSet.Add(schema);
-
-				using (var reader = XmlReader.Create(
-							Path.GetFullPath(Path.Combine(xsdPath, "VectoOutputMultistep.0.1.xsd"))))
-				{
-					schema = XmlSchema.Read(reader, null);
-				}
-
-				schemaSet.Add(schema);
-				
-
-				if (elementSelector != null) {
-					document.Validate(schemaSet, ((sender, args) => {
-						//do nothing just add schema info
-					}), true);
-					var element = elementSelector(document);
-					element.Validate(element.GetSchemaInfo().SchemaType, schemaSet, (sender, args) => {
-						error = true;
-						TestContext.WriteLine(sender?.ToString());
-						TestContext.WriteLine(args.Message);
-					});
-				} else {
-					document.Validate(schemaSet, (sender, args) => {
-						error = true;
-
-						TestContext.WriteLine(sender?.ToString());
-						TestContext.WriteLine(args.Message);
-					});
-				}
-
-				
+				var mrfStream = new MemoryStream();
+				var mrfWriter = new XmlTextWriter(mrfStream, Encoding.UTF8);
+				document.WriteTo(mrfWriter);
+				mrfWriter.Flush();
+				mrfStream.Flush();
+				mrfStream.Seek(0, SeekOrigin.Begin);
+				var validator = new XMLValidator(new XmlTextReader(mrfStream));
+				error = validator.ValidateXML(XmlDocumentType.CustomerReport | XmlDocumentType.ManufacturerReport);
 			} finally {
 				TestContext.WriteLine(document);
 			}
@@ -158,23 +116,6 @@ namespace TUGraz.VectoCore.Tests.XML.Reports
 		}
 
 
-		private static XmlSchemaSet XmlSchemaSet(params (string path, string targetNamespace)[] paths)
-		{
-			XmlSchemaSet schemas = new XmlSchemaSet();
-			foreach (var path in paths) {
-				using (XmlReader reader = new XmlTextReader(path.path)
-						{
-							XmlResolver = new XmlUrlResolver()
-
-						})
-				{
-					schemas.Add(path.targetNamespace, reader);
-				};
-				
-			}
-			return schemas;
-		}
-
 		protected bool WriteToDisk(string basePath, string fileName, XDocument xDocument)
 		{
 			TestContext.WriteLine($"{basePath},{fileName}");
diff --git a/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs b/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs
index 5f30f334f2..f8871c9f14 100644
--- a/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs
+++ b/VectoMockup/VectoMockup/Ninject/VIFMockupModule.cs
@@ -15,7 +15,7 @@ using TUGraz.VectoMockup.Reports;
 
 namespace TUGraz.VectoMockup.Ninject
 {
-    internal class VIFMockupModule : AbstractNinjectModule
+    public class VIFMockupModule : AbstractNinjectModule
     {
 		#region Overrides of NinjectModule
 
@@ -40,11 +40,20 @@ namespace TUGraz.VectoMockup.Ninject
 
 			#region Implementation of IVIFReportFactory
 
-			public IXMLPrimaryVehicleReport GetVIFReport(VehicleCategory vehicleType, VectoSimulationJobType jobType, ArchitectureID archId,
+			public IXMLVehicleInformationFile GetVIFReport(VehicleCategory vehicleType, VectoSimulationJobType jobType, ArchitectureID archId,
 				bool exempted, bool iepc, bool ihpc)
 			{
-				return new MockupVIFReport(
-					_vifReportFactoryImplementation.GetVIFReport(vehicleType, jobType, archId, exempted, iepc, ihpc));
+				switch (vehicleType) {
+					case VehicleCategory.HeavyBusPrimaryVehicle:
+						return new MockupPrimaryVehicleInformationFile(
+							_vifReportFactoryImplementation.GetVIFReport(vehicleType, jobType, archId, exempted, iepc,
+								ihpc));
+					case VehicleCategory.HeavyBusCompletedVehicle:
+						return new MockupVehicleInformationFile(
+							_vifReportFactoryImplementation.GetVIFReport(vehicleType, jobType, archId, exempted, iepc,
+								ihpc));
+					default: throw new ArgumentException();
+				}
 			}
 
 			public IXmlTypeWriter GetConventionalVehicleType()
diff --git a/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs b/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs
index 289e03d5e9..8318779ca7 100644
--- a/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs
+++ b/VectoMockup/VectoMockup/Reports/MockupReportFactory.cs
@@ -108,7 +108,7 @@ namespace TUGraz.VectoMockup.Reports
                             PrimaryVehicleReportInputData = declarationInputDataProvider.PrimaryVehicleData,
                         };
                     case VehicleCategory.HeavyBusPrimaryVehicle:
-                        return new XMLDeclarationMockupPrimaryReport(outputDataWriter, _mrfFactory, _cifFactory,
+                        return new XMLDeclarationMockupPrimaryReport(outputDataWriter, _mrfFactory, _cifFactory, _vifFactory,
 							declarationInputDataProvider.JobInputData.Vehicle.ExemptedVehicle,
                             declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory ==
                             VehicleCategory.HeavyBusPrimaryVehicle);
@@ -134,6 +134,8 @@ namespace TUGraz.VectoMockup.Reports
 		public IManufacturerReportFactory MrfFactory => _mrfFactory;
 		public ICustomerInformationFileFactory CifFactory => _cifFactory;
 
+		public IVIFReportFactory VifFactory => _vifFactory;
+
 		#endregion
 	}
 
@@ -141,5 +143,7 @@ namespace TUGraz.VectoMockup.Reports
 	{
 		IManufacturerReportFactory MrfFactory { get; }
         ICustomerInformationFileFactory CifFactory { get; }
+
+        IVIFReportFactory VifFactory { get; }
 	}
 }
diff --git a/VectoMockup/VectoMockup/Reports/MockupVIFReport.cs b/VectoMockup/VectoMockup/Reports/MockupVIFReport.cs
index 4d94b9f6aa..2c244ecb98 100644
--- a/VectoMockup/VectoMockup/Reports/MockupVIFReport.cs
+++ b/VectoMockup/VectoMockup/Reports/MockupVIFReport.cs
@@ -11,13 +11,13 @@ using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
 
 namespace TUGraz.VectoMockup.Reports
 {
-    public class MockupVIFReport : IXMLPrimaryVehicleReport, IXMLMockupReport
+    public class MockupVehicleInformationFile : IXMLVehicleInformationFile, IXMLMockupReport
     {
 		private XDocument _report;
 		private XNamespace _tns;
 
 
-		public MockupVIFReport(IXMLPrimaryVehicleReport vifReport)
+		public MockupVehicleInformationFile(IXMLVehicleInformationFile vehicleInformationFile)
 		{
 
 		}
diff --git a/VectoMockup/VectoMockup/Reports/MockupPrimaryReport.cs b/VectoMockup/VectoMockup/Reports/MockupVehicleInformationFile.cs
similarity index 69%
rename from VectoMockup/VectoMockup/Reports/MockupPrimaryReport.cs
rename to VectoMockup/VectoMockup/Reports/MockupVehicleInformationFile.cs
index 508f3a13e3..880a9c65a7 100644
--- a/VectoMockup/VectoMockup/Reports/MockupPrimaryReport.cs
+++ b/VectoMockup/VectoMockup/Reports/MockupVehicleInformationFile.cs
@@ -15,17 +15,17 @@ using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile;
 
 namespace TUGraz.VectoMockup.Reports
 {
-    internal class MockupPrimaryReport : IXMLPrimaryVehicleReport, IXMLMockupReport
+    internal class MockupPrimaryVehicleInformationFile : IXMLVehicleInformationFile, IXMLMockupReport
     {
 		
-		private readonly IXMLPrimaryVehicleReport _primaryVehicleReportImplementation;
+		private readonly IXMLVehicleInformationFile _vehicleInformationFileImplementation;
 		private VectoRunData _modelData;
 
 		private XElement Results;
-		public MockupPrimaryReport(IXMLPrimaryVehicleReport primaryVehicleReportImplementation)
+		public MockupPrimaryVehicleInformationFile(IXMLVehicleInformationFile vehicleInformationFileImplementation)
 		{
-			_primaryVehicleReportImplementation = primaryVehicleReportImplementation;
-			Results = new XElement(_primaryVehicleReportImplementation.Tns + XMLNames.Report_Results);
+			_vehicleInformationFileImplementation = vehicleInformationFileImplementation;
+			Results = new XElement(_vehicleInformationFileImplementation.Tns + XMLNames.Report_Results);
 		}
 
 
@@ -33,16 +33,16 @@ namespace TUGraz.VectoMockup.Reports
 
 		public void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes)
 		{
-			_primaryVehicleReportImplementation.Initialize(modelData, fuelModes);
+			_vehicleInformationFileImplementation.Initialize(modelData, fuelModes);
 			_modelData = modelData;
 		}
 
 		public void WriteResult(XMLDeclarationReport.ResultEntry result)
 		{
-			_primaryVehicleReportImplementation.WriteResult(result);
+			_vehicleInformationFileImplementation.WriteResult(result);
 		}
 
-		public XNamespace Tns => _primaryVehicleReportImplementation.Tns;
+		public XNamespace Tns => _vehicleInformationFileImplementation.Tns;
 
 		#endregion
 
@@ -69,14 +69,14 @@ namespace TUGraz.VectoMockup.Reports
 
 		public void GenerateReport(XElement fullReportHash)
 		{ 
-			_primaryVehicleReportImplementation.GenerateReport(fullReportHash);
+			_vehicleInformationFileImplementation.GenerateReport(fullReportHash);
 		}
 
 		public XDocument Report
 		{
 			get
 			{
-				var report = _primaryVehicleReportImplementation.Report;
+				var report = _vehicleInformationFileImplementation.Report;
 				var resultsElement = report.XPathSelectElements($"//*[local-name()='{XMLNames.Report_Results}']");
 				resultsElement.First().ReplaceWith(Results);
 				return report;
diff --git a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs
index 8bfa286065..802c187585 100644
--- a/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs
+++ b/VectoMockup/VectoMockup/Reports/XMLDeclarationMockupPrimaryReport.cs
@@ -7,6 +7,7 @@ using TUGraz.VectoCore.OutputData.XML;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1;
 
 namespace TUGraz.VectoMockup.Reports
 {
@@ -16,10 +17,13 @@ namespace TUGraz.VectoMockup.Reports
 
 		public XMLDeclarationMockupPrimaryReport(IReportWriter writer,
 			IManufacturerReportFactory mrfFactory,
-			ICustomerInformationFileFactory cifFactory, bool exempted,
+			ICustomerInformationFileFactory cifFactory, 
+			IVIFReportFactory vifFactory,
+			bool exempted,
 			bool writePIF = false) : base(writer,
 			mrfFactory,
 			cifFactory,
+			vifFactory,
 			writePIF)
 		{
 			_exempted = exempted;
@@ -28,7 +32,7 @@ namespace TUGraz.VectoMockup.Reports
 		protected override void InstantiateReports(VectoRunData modelData)
 		{
 			base.InstantiateReports(modelData);
-			PrimaryReport = new MockupPrimaryReport(PrimaryReport);
+			//VehicleInformationFile = new MockupPrimaryVehicleInformationFile(VehicleInformationFile);
 		}
 
 		#region Overrides of XMLDeclarationReportPrimaryVehicle_09
@@ -41,7 +45,7 @@ namespace TUGraz.VectoMockup.Reports
 		protected override void WriteResult(ResultEntry result)
 		{
 			(ManufacturerRpt as IXMLMockupReport).WriteMockupResult(result);
-			(PrimaryReport as IXMLMockupReport).WriteMockupResult(result);
+			(VehicleInformationFile as IXMLMockupReport).WriteMockupResult(result);
 		}
 
 		#endregion
@@ -52,16 +56,16 @@ namespace TUGraz.VectoMockup.Reports
 		{
 			if (!_exempted) {
 				(ManufacturerRpt as IXMLMockupReport).WriteMockupSummary(Results.First());
-				(PrimaryReport as IXMLMockupReport).WriteMockupSummary(Results.First());
+				(VehicleInformationFile as IXMLMockupReport).WriteMockupSummary(Results.First());
 			} else {
 				(ManufacturerRpt as IXMLMockupReport).WriteExemptedResults();
-				(PrimaryReport as IXMLMockupReport).WriteExemptedResults();
+				(VehicleInformationFile as IXMLMockupReport).WriteExemptedResults();
 			}
 
 			ManufacturerRpt.GenerateReport();
 			var fullReportHash = CreateDummySig();
 			//CustomerRpt.GenerateReport(fullReportHash);
-			PrimaryReport.GenerateReport(fullReportHash);
+			VehicleInformationFile.GenerateReport(fullReportHash);
 		}
 
 		protected virtual XElement CreateDummySig()
diff --git a/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupFollowUpSimulatorFactoryCreator.cs b/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupFollowUpSimulatorFactoryCreator.cs
index 40f5aeccd5..460b901031 100644
--- a/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupFollowUpSimulatorFactoryCreator.cs
+++ b/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupFollowUpSimulatorFactoryCreator.cs
@@ -6,6 +6,7 @@ using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory;
 using TUGraz.VectoCore.OutputData;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformationFile.CustomerInformationFile_0_9;
 using TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport.ManufacturerReport_0_9.ManufacturerReportXMLTypeWriter;
+using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.VehicleInformationFile_0_1;
 using TUGraz.VectoMockup.Reports;
 
 namespace TUGraz.VectoMockup.Simulation.SimulatorFactory
@@ -18,12 +19,13 @@ namespace TUGraz.VectoMockup.Simulation.SimulatorFactory
 			ISimulatorFactoryFactory simFactoryFactory,
 			IManufacturerReportFactory mrfFactory, 
 			ICustomerInformationFileFactory cifFactory,
+			IVIFReportFactory vifFactory,
 			IXMLInputDataReader inputDataReader, bool validate) :
 			base(originalStageInputData, originalReportWriter, originalDeclarationReport, simFactoryFactory,
 				inputDataReader, validate)
 		{
 			_currentStageDeclarationReport =
-				new XMLDeclarationMockupPrimaryReport(_currentStageOutputDataWriter, mrfFactory, cifFactory, originalStageInputData.StageInputData.ExemptedVehicle,true);
+				new XMLDeclarationMockupPrimaryReport(_currentStageOutputDataWriter, mrfFactory, cifFactory, vifFactory, originalStageInputData.StageInputData.ExemptedVehicle,true);
 		}
 
 		#region Overrides of InterimAfterPrimaryFactoryCreator
diff --git a/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupSimulatorFactories.cs b/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupSimulatorFactories.cs
index 0ef5b2f182..9320ffb9d3 100644
--- a/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupSimulatorFactories.cs
+++ b/VectoMockup/VectoMockup/Simulation/SimulatorFactory/MockupSimulatorFactories.cs
@@ -121,6 +121,7 @@ namespace TUGraz.VectoMockup.Simulation.SimulatorFactory
 						_simFactoryFactory, 
 						((IMockupDeclarationReportFactory)_xmlDeclarationReportFactory).MrfFactory,
 						((IMockupDeclarationReportFactory)_xmlDeclarationReportFactory).CifFactory, 
+						((IMockupDeclarationReportFactory)_xmlDeclarationReportFactory).VifFactory,
 						_xmlInputDataReader, 
 						Validate);
 				case IMultistageVIFInputData multistageVifInputData:
-- 
GitLab