From 5b77b8df8259991bb04587562742004eaa2e305e Mon Sep 17 00:00:00 2001
From: "VKMTHD\\franzjosefkober" <franz.josef.kober@ivt.tugraz.at>
Date: Wed, 3 Mar 2021 18:13:09 +0100
Subject: [PATCH] added additional bus auxiliaries interface properties

---
 .../VectoCommon/BusAuxiliaries/ISSMInputs.cs  | 85 +++++++++++++++++++
 .../InputData/DeclarationInputData.cs         | 30 +++++--
 .../Resources/XMLNames.Designer.cs            | 63 ++++++++++++++
 .../VectoCommon/Resources/XMLNames.resx       | 21 +++++
 .../FileIO/JSON/JSONComponentInputData.cs     |  5 +-
 .../InputData/FileIO/JSON/JSONSubComponent.cs | 13 ++-
 .../InputData/FileIO/JSON/JSONVehicleData.cs  |  5 +-
 ...MLDeclarationBusAuxiliariesDataProvider.cs | 55 ++++++++++++
 .../XMLDeclarationVehicleDataProvider.cs      | 11 +--
 .../XMLEngineeringVehicleDataProvider.cs      | 10 +--
 .../Reader/Impl/CombinedBusAuxiliaries.cs     |  7 ++
 .../XML/XMLMultistageBusInputTest.cs          |  8 +-
 12 files changed, 280 insertions(+), 33 deletions(-)

diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs
index cb7d34a106..52434649c8 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMInputs.cs
@@ -186,4 +186,89 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 		double FuelEnergyToHeatToCoolant { get; }
 		double CoolantHeatTransferredToAirCabinHeater { get; }
 	}
+
+
+	public enum HeatPumpType
+	{
+		none,
+		R_744,
+		non_R_744_2_stage,
+		non_R_744_3_stage,
+		non_R_744_4_stage,
+		non_R_744_continuous
+	}
+
+	public static class HeatPumpTypeHelper
+	{
+		private const string NONE = "none";
+		private const string R_744 = "R-744";
+		private const string NON_R_744_2_STAGE = "non R-744 2-stage";
+		private const string NON_R_744_3_STAGE = "non R-744 3-stage";
+		private const string NON_R_744_4_STAGE = "non R-744 4-stage";
+		private const string NON_R_744_CONTINUOUS = "non R-744 continuous";
+		
+		public static HeatPumpType? Parse(string parse)
+		{
+			switch (parse)
+			{
+				case NONE: return HeatPumpType.none;
+				case R_744: return HeatPumpType.R_744;
+				case NON_R_744_2_STAGE: return HeatPumpType.non_R_744_2_stage;
+				case NON_R_744_3_STAGE: return HeatPumpType.non_R_744_3_stage;
+				case NON_R_744_4_STAGE: return HeatPumpType.non_R_744_4_stage;
+				case NON_R_744_CONTINUOUS: return HeatPumpType.non_R_744_continuous;
+				default: return null;
+			}
+		}
+
+		public static string GetLabel(this HeatPumpType type)
+		{
+			switch (type) {
+				case HeatPumpType.none: return NONE;
+				case HeatPumpType.R_744: return R_744;
+				case HeatPumpType.non_R_744_2_stage: return NON_R_744_2_STAGE;
+				case HeatPumpType.non_R_744_3_stage: return NON_R_744_3_STAGE;
+				case HeatPumpType.non_R_744_4_stage: return NON_R_744_4_STAGE;
+				case HeatPumpType.non_R_744_continuous: return NON_R_744_CONTINUOUS;
+				default: return null;
+			}
+		}
+	}
+
+
+	public enum HeatPumpMode
+	{
+		heating,
+		heating_and_cooling,
+		cooling
+	}
+
+	public static class HeatPumpModeHelper
+	{
+		private const string HEATING = "heating";
+		private const string HEATING_AND_COOLING = "heating_and_cooling";
+		private const string COOLING = "cooling";
+
+		public static HeatPumpMode? Parse(string parse)
+		{
+			switch (parse)
+			{
+				case HEATING: return HeatPumpMode.heating;
+				case HEATING_AND_COOLING: return HeatPumpMode.heating_and_cooling;
+				case COOLING: return HeatPumpMode.cooling;
+				default: return null;
+			}
+		}
+
+		public static string GetLabel(this HeatPumpMode type)
+		{
+			switch (type)
+			{
+				case HeatPumpMode.heating: return HEATING;
+				case HeatPumpMode.heating_and_cooling: return HEATING_AND_COOLING;
+				case HeatPumpMode.cooling: return COOLING;
+				default: return null;
+			}
+		}
+	}
 }
diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
index 99bdd3c652..f5601dd153 100644
--- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
@@ -862,22 +862,36 @@ namespace TUGraz.VectoCommon.InputData
 	{
 		BusHVACSystemConfiguration SystemConfiguration { get; }
 
-		ACCompressorType CompressorTypeDriver { get; }
-		ACCompressorType CompressorTypePassenger { get; }
+		HeatPumpType? HeatPumpTypeDriverCompartment { get; }
+		
+		HeatPumpMode? HeatPumpModeDriverCompartment { get; }
+
+		HeatPumpType? HeatPumpTypePassengerCompartment { get; }
+		
+		HeatPumpMode? HeatPumpModePassengerCompartment { get; }
+		
+		ACCompressorType CompressorTypeDriver { get; }//
+		ACCompressorType CompressorTypePassenger { get; }//
 
 		Watt AuxHeaterPower { get; }
 
 		bool DoubleGlazing { get; }
 
-		bool HeatPump { get; }
+		bool HeatPump { get; } //
+		
+		bool AdjustableAuxiliaryHeater { get; }
 
-		bool AdjustableCoolantThermostat { get; }
+		bool SeparateAirDistributionDucts { get; }
 
-		bool AdjustableAuxiliaryHeater { get; }
+		bool WaterElectricHeater { get; }
 
-		bool EngineWasteGasHeatExchanger { get; }
+		bool AirElectricHeater { get; }
 
-		bool SeparateAirDistributionDucts { get; }
+		bool OtherHeatingTechnology { get; }
+
+		bool AdjustableCoolantThermostat { get; }
+	
+		bool EngineWasteGasHeatExchanger { get; }
 	}
 
 
@@ -940,7 +954,7 @@ namespace TUGraz.VectoCommon.InputData
 				case nameof(StateOfCompletion.completed):
 					return StateOfCompletion.completed;
 				default:
-					return StateOfCompletion.unknown;
+					throw new ArgumentOutOfRangeException();
 			}
 		}
 	}
diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
index c18e66c5e5..c67d405baf 100644
--- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs
@@ -447,6 +447,15 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to AirElectricHeater.
+        /// </summary>
+        public static string Bus_AirElectricHeater {
+            get {
+                return ResourceManager.GetString("Bus_AirElectricHeater", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to AirsuspensionControl.
         /// </summary>
@@ -573,6 +582,42 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to HeatPumpModeDriverCompartment.
+        /// </summary>
+        public static string Bus_HeatPumpModeDriver {
+            get {
+                return ResourceManager.GetString("Bus_HeatPumpModeDriver", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to HeatPumpModePassengerCompartment.
+        /// </summary>
+        public static string Bus_HeatPumpModePassenger {
+            get {
+                return ResourceManager.GetString("Bus_HeatPumpModePassenger", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to HeatPumpTypeDriverCompartment.
+        /// </summary>
+        public static string Bus_HeatPumpTypeDriver {
+            get {
+                return ResourceManager.GetString("Bus_HeatPumpTypeDriver", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to HeatPumpTypePassengerCompartment.
+        /// </summary>
+        public static string Bus_HeatPumpTypePassenger {
+            get {
+                return ResourceManager.GetString("Bus_HeatPumpTypePassenger", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to HeightIntegratedBody.
         /// </summary>
@@ -636,6 +681,15 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to OtherHeatingTechnology.
+        /// </summary>
+        public static string Bus_OtherHeatingTechnology {
+            get {
+                return ResourceManager.GetString("Bus_OtherHeatingTechnology", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to PassengerAC.
         /// </summary>
@@ -771,6 +825,15 @@ namespace TUGraz.VectoCommon.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to WaterElectricHeater.
+        /// </summary>
+        public static string Bus_WaterElectricHeater {
+            get {
+                return ResourceManager.GetString("Bus_WaterElectricHeater", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to ElectricSystem.
         /// </summary>
diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx
index e7eaa42680..b8eaad1e3a 100644
--- a/VectoCommon/VectoCommon/Resources/XMLNames.resx
+++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx
@@ -1398,4 +1398,25 @@
   <data name="Bus_StateOfCompletion" xml:space="preserve">
     <value>StateOfCompletion</value>
   </data>
+  <data name="Bus_AirElectricHeater" xml:space="preserve">
+    <value>AirElectricHeater</value>
+  </data>
+  <data name="Bus_HeatPumpModeDriver" xml:space="preserve">
+    <value>HeatPumpModeDriverCompartment</value>
+  </data>
+  <data name="Bus_HeatPumpModePassenger" xml:space="preserve">
+    <value>HeatPumpModePassengerCompartment</value>
+  </data>
+  <data name="Bus_HeatPumpTypeDriver" xml:space="preserve">
+    <value>HeatPumpTypeDriverCompartment</value>
+  </data>
+  <data name="Bus_HeatPumpTypePassenger" xml:space="preserve">
+    <value>HeatPumpTypePassengerCompartment</value>
+  </data>
+  <data name="Bus_OtherHeatingTechnology" xml:space="preserve">
+    <value>OtherHeatingTechnology</value>
+  </data>
+  <data name="Bus_WaterElectricHeater" xml:space="preserve">
+    <value>WaterElectricHeater</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
index 27ba8c49b4..d1071c5435 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs
@@ -340,10 +340,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 			get { return VehicleData.DoorDriveTechnology; }
 		}
 
-		public StateOfCompletion StateOfCompletion
-		{
-			get { return StateOfCompletion.unknown; }
-		}
+		public StateOfCompletion StateOfCompletion { get; }
 
 		IVehicleComponentsEngineering IVehicleEngineeringInputData.Components
 		{
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs
index 43941ecb2e..fe721e9a55 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs
@@ -631,17 +631,24 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
         #region Implementation of IHVACBusAuxiliariesDeclarationData
 
         public virtual BusHVACSystemConfiguration SystemConfiguration { get; set; }
-        public virtual ACCompressorType CompressorTypeDriver { get { return ACCompressorType.Unknown; } }
+		public virtual HeatPumpType? HeatPumpTypeDriverCompartment { get { return null; } }
+		public virtual HeatPumpMode? HeatPumpModeDriverCompartment { get { return null; } }
+		public virtual HeatPumpType? HeatPumpTypePassengerCompartment { get{ return null; } }
+		public virtual HeatPumpMode? HeatPumpModePassengerCompartment { get { return null; } }
+		public virtual ACCompressorType CompressorTypeDriver { get { return ACCompressorType.Unknown; } }
         public virtual ACCompressorType CompressorTypePassenger { get { return ACCompressorType.Unknown; } }
         public virtual Watt AuxHeaterPower { get { return null; } }
         public virtual bool DoubleGlazing { get { return false; } }
         public virtual bool HeatPump { get { return false; } }
-        public virtual bool AdjustableCoolantThermostat { get { return Body["Aux"]?["HVAC"]?.GetEx<bool>("AdjustableCoolantThermostat") ?? false; } }
+		public bool OtherHeatingTechnology { get; }
+		public virtual bool AdjustableCoolantThermostat { get { return Body["Aux"]?["HVAC"]?.GetEx<bool>("AdjustableCoolantThermostat") ?? false; } }
         public virtual bool AdjustableAuxiliaryHeater { get { return false; } }
         public virtual bool EngineWasteGasHeatExchanger { get { return Body["Aux"]?["HVAC"]?.GetEx<bool>("EngineWasteGasHeatExchanger") ?? false; } }
         public virtual bool SeparateAirDistributionDucts { get { return false; } }
+		public virtual bool WaterElectricHeater { get; }
+		public virtual bool AirElectricHeater { get; }
 
-        #endregion
+		#endregion
 
     }
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
index fd97e27524..b857b8ab92 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs
@@ -321,10 +321,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
 		public virtual Meter EntranceHeight { get { return null; } }
 		public virtual ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } }
 
-		public virtual StateOfCompletion StateOfCompletion
-		{
-			get { return StateOfCompletion.unknown; }
-		}
+		public virtual StateOfCompletion StateOfCompletion { get; }
 
 		IVehicleComponentsEngineering IVehicleEngineeringInputData.Components
 		{
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
index f5761a1115..3bc719b2a5 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
@@ -168,6 +168,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return BusHVACSystemConfiguration.Unknown; }
 		}
 
+		public virtual HeatPumpType? HeatPumpTypeDriverCompartment { get { return null; } }
+		public virtual HeatPumpMode? HeatPumpModeDriverCompartment { get { return null; } }
+		public virtual HeatPumpType? HeatPumpTypePassengerCompartment { get { return null; } }
+		public virtual HeatPumpMode? HeatPumpModePassengerCompartment { get { return null; } }
+
 		public virtual ACCompressorType CompressorTypeDriver
 		{
 			get { return ACCompressorType.None; }
@@ -193,6 +198,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return false; }
 		}
 
+		public virtual bool OtherHeatingTechnology
+		{
+			get { return false; }
+		}
+
 		public virtual bool AdjustableCoolantThermostat
 		{
 			get { return GetBool(new[] { "HVAC", "AdjustableCoolantThermostat" }); }
@@ -213,6 +223,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return false; }
 		}
 
+		public virtual bool WaterElectricHeater
+		{
+			get { return false; }
+		}
+		public virtual bool AirElectricHeater
+		{
+			get { return false; }
+		}
+
 		#endregion
 	}
 
@@ -323,5 +342,41 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		public XMLDeclarationCompleteBusAuxiliariesDataProviderV28(IXMLDeclarationVehicleData vehicle,
 			XmlNode componentNode, string sourceFile)
 			: base(vehicle, componentNode, sourceFile) { }
+
+
+		public override HeatPumpType? HeatPumpTypeDriverCompartment
+		{
+			get { return HeatPumpTypeHelper.Parse(GetString(XMLNames.Bus_HeatPumpTypeDriver)); }
+		}
+
+		public override HeatPumpMode? HeatPumpModeDriverCompartment
+		{
+			get { return HeatPumpModeHelper.Parse(GetString(XMLNames.Bus_HeatPumpModeDriver)); }
+		}
+
+		public override HeatPumpType? HeatPumpTypePassengerCompartment
+		{
+			get { return HeatPumpTypeHelper.Parse(GetString(XMLNames.Bus_HeatPumpTypePassenger)); }
+		}
+
+		public override HeatPumpMode? HeatPumpModePassengerCompartment
+		{
+			get { return HeatPumpModeHelper.Parse(GetString(XMLNames.Bus_HeatPumpModePassenger)); }
+		}
+
+		public override bool WaterElectricHeater
+		{
+			get { return GetBool(XMLNames.Bus_WaterElectricHeater); }
+		}
+
+		public override bool AirElectricHeater
+		{
+			get { return GetBool(XMLNames.Bus_AirElectricHeater); }
+		}
+
+		public override bool OtherHeatingTechnology
+		{
+			get { return GetBool(XMLNames.Bus_OtherHeatingTechnology); }
+		}
 	}
 }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
index 24c582df8a..20e9863570 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs
@@ -330,10 +330,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		public virtual ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } }
 		
-		public virtual StateOfCompletion StateOfCompletion
-		{
-			get { return StateOfCompletion.unknown; }
-		}
+		public virtual StateOfCompletion StateOfCompletion { get; }
 
 		public virtual IVehicleComponentsDeclaration Components
 		{
@@ -1041,10 +1038,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 			get { return ConsumerTechnology.Unknown; }
 		}
 
-		public StateOfCompletion StateOfCompletion
-		{
-			get { return StateOfCompletion.unknown; }
-		}
+		public StateOfCompletion StateOfCompletion { get; }
+		
 
 		public IVehicleComponentsDeclaration Components
 		{
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs
index 27a8eced7d..cd1dc4d1d0 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs
@@ -129,7 +129,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider
 			get { return false; }
 		}
 
-		public virtual bool AirdragModifiedMultistage { get; }
+		public virtual bool AirdragModifiedMultistage
+		{
+			get { return false; }
+		}
 
 		public TankSystem? TankSystem
 		{
@@ -178,10 +181,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider
 		public virtual Meter Width { get { return null; } }
 		public virtual Meter EntranceHeight { get { return null; } }
 		public ConsumerTechnology DoorDriveTechnology { get { return ConsumerTechnology.Unknown; } }
-		public virtual StateOfCompletion StateOfCompletion
-		{
-			get { return StateOfCompletion.unknown; }
-		}
+		public virtual StateOfCompletion StateOfCompletion { get; }
 
 		IVehicleComponentsDeclaration IVehicleDeclarationInputData.Components
 		{
diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/CombinedBusAuxiliaries.cs b/VectoCore/VectoCore/InputData/Reader/Impl/CombinedBusAuxiliaries.cs
index 4fde30d1ad..ae858ca918 100644
--- a/VectoCore/VectoCore/InputData/Reader/Impl/CombinedBusAuxiliaries.cs
+++ b/VectoCore/VectoCore/InputData/Reader/Impl/CombinedBusAuxiliaries.cs
@@ -74,15 +74,22 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl {
 		#region Implementation of IHVACBusAuxiliariesDeclarationData
 
 		public BusHVACSystemConfiguration SystemConfiguration { get; }
+		public HeatPumpType? HeatPumpTypeDriverCompartment { get; }
+		public HeatPumpMode? HeatPumpModeDriverCompartment { get; }
+		public HeatPumpType? HeatPumpTypePassengerCompartment { get; }
+		public HeatPumpMode? HeatPumpModePassengerCompartment { get; }
 		public ACCompressorType CompressorTypeDriver { get; }
 		public ACCompressorType CompressorTypePassenger { get; }
 		public Watt AuxHeaterPower { get; }
 		public bool DoubleGlazing { get; }
 		public bool HeatPump { get; }
+		public bool OtherHeatingTechnology { get; }
 		public bool AdjustableCoolantThermostat { get; }
 		public bool AdjustableAuxiliaryHeater { get; }
 		public bool EngineWasteGasHeatExchanger { get; }
 		public bool SeparateAirDistributionDucts { get; }
+		public bool WaterElectricHeater { get; }
+		public bool AirElectricHeater { get; }
 
 		#endregion
 	}
diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputTest.cs
index 1229c746df..a9cd67da5c 100644
--- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputTest.cs
@@ -84,7 +84,6 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.AreEqual("Vecto AirDrag x.y", airdrag.AppVersion);
 			Assert.AreEqual(6.34, airdrag.AirDragArea.Value());
 		}
-
 		
 		private void TestAuxiliariesComponent(IBusAuxiliariesDeclarationData busAux)
 		{
@@ -104,10 +103,17 @@ namespace TUGraz.VectoCore.Tests.XML
 		private void TestHVACComponent(IHVACBusAuxiliariesDeclarationData hvacAux)
 		{
 			Assert.AreEqual(BusHVACSystemConfiguration.Configuration0, hvacAux.SystemConfiguration);
+			Assert.AreEqual(HeatPumpType.none, hvacAux.HeatPumpTypeDriverCompartment);
+			Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpModeDriverCompartment);
+			Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpTypePassengerCompartment);
+			Assert.AreEqual(HeatPumpMode.cooling, hvacAux.HeatPumpModePassengerCompartment);
 			Assert.AreEqual(50, hvacAux.AuxHeaterPower.Value());
 			Assert.AreEqual(false, hvacAux.DoubleGlazing);
 			Assert.AreEqual(true, hvacAux.AdjustableAuxiliaryHeater);
 			Assert.AreEqual(false, hvacAux.SeparateAirDistributionDucts);
+			Assert.AreEqual(true, hvacAux.WaterElectricHeater);
+			Assert.AreEqual(false, hvacAux.AirElectricHeater);
+			Assert.AreEqual(false, hvacAux.OtherHeatingTechnology);
 		}
 	}
 }
-- 
GitLab