From 6655c1196c673f6337dc73362fd1d34d4ae61f7e Mon Sep 17 00:00:00 2001
From: "VKMTHD\\franzjosefkober" <franz.josef.kober@ivt.tugraz.at>
Date: Fri, 28 May 2021 14:49:04 +0200
Subject: [PATCH] adjusted code of heat pump passenger compartments

---
 .../BusAuxiliaries/ISSMDeclarationInputs.cs   | 86 +++++++++----------
 .../InputData/DeclarationInputData.cs         |  5 +-
 .../InputData/FileIO/JSON/JSONSubComponent.cs |  6 +-
 ...MLDeclarationBusAuxiliariesDataProvider.cs | 75 +++++++---------
 .../XMLDeclarationMultistageInputReader.cs    | 14 +--
 ...larationDataAdapterCompletedBusSpecific.cs |  4 +-
 .../OutputData/XML/XMLMultistageBusReport.cs  | 25 +++---
 ...LMultistageBusConsolidatedInputDataTest.cs |  5 +-
 .../XML/XMLMultistageBusDataTest.cs           | 14 ++-
 .../XML/XMLMultistageBusInputDataTest.cs      | 11 ++-
 10 files changed, 108 insertions(+), 137 deletions(-)

diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMDeclarationInputs.cs b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMDeclarationInputs.cs
index 4ceecddbed..f38ab1e761 100644
--- a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMDeclarationInputs.cs
+++ b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMDeclarationInputs.cs
@@ -232,11 +232,11 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 				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;
-                // to support old input parametersd
+				// to support old input parametersd
 				case "2-stage": return HeatPumpType.non_R_744_2_stage;
-                case "3-stage": return HeatPumpType.non_R_744_3_stage;
-                case "4-stage": return HeatPumpType.non_R_744_4_stage;
-                default: throw new InvalidEnumArgumentException("HeatPumpType");
+				case "3-stage": return HeatPumpType.non_R_744_3_stage;
+				case "4-stage": return HeatPumpType.non_R_744_4_stage;
+				default: throw new InvalidEnumArgumentException("HeatPumpType");
 			}
 		}
 
@@ -261,44 +261,44 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 			return GetLabel(type as HeatPumpType?);
 		}
 
-        public static string GetName(this HeatPumpType type)
-        {
-            return type.ToString();
-        }
-
-        public static bool IsElectrical(this HeatPumpType type)
-        {
-            return type == HeatPumpType.R_744 || type == HeatPumpType.non_R_744_continuous;
-        }
-
-        public static bool IsMechanical(this HeatPumpType type)
-        {
-            return !type.IsElectrical();
-        }
-
-        public static double COP(this HeatPumpType type, FloorType floortype)
-        {
-            var cop = 3.5;
-
-            switch (type) {
-                case HeatPumpType.none:
-                //case HeatPumpType.Unknown:
-                    return 0;
-                case HeatPumpType.non_R_744_2_stage:
-                    return cop;
-                case HeatPumpType.non_R_744_3_stage:
-                case HeatPumpType.non_R_744_4_stage:
-                    return cop * 1.02;
-                case HeatPumpType.non_R_744_continuous:
+		public static string GetName(this HeatPumpType type)
+		{
+			return type.ToString();
+		}
+
+		public static bool IsElectrical(this HeatPumpType type)
+		{
+			return type == HeatPumpType.R_744 || type == HeatPumpType.non_R_744_continuous;
+		}
+
+		public static bool IsMechanical(this HeatPumpType type)
+		{
+			return !type.IsElectrical();
+		}
+
+		public static double COP(this HeatPumpType type, FloorType floortype)
+		{
+			var cop = 3.5;
+
+			switch (type) {
+				case HeatPumpType.none:
+				//case HeatPumpType.Unknown:
+					return 0;
+				case HeatPumpType.non_R_744_2_stage:
+					return cop;
+				case HeatPumpType.non_R_744_3_stage:
+				case HeatPumpType.non_R_744_4_stage:
+					return cop * 1.02;
+				case HeatPumpType.non_R_744_continuous:
 				case HeatPumpType.R_744:
-                    return floortype == FloorType.LowFloor
-                        ? cop * 1.04
-                        : cop * 1.06;
-                default:
-                    throw new ArgumentOutOfRangeException();
-            }
-        }
-    }
+					return floortype == FloorType.LowFloor
+						? cop * 1.04
+						: cop * 1.06;
+				default:
+					throw new ArgumentOutOfRangeException();
+			}
+		}
+	}
 
 	public enum HeatPumpMode
 	{
@@ -320,7 +320,7 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 		private const string COOLING = "cooling";
 		private const string N_A = "N.A.";
 
-		public static HeatPumpMode? Parse(string parse)
+		public static HeatPumpMode Parse(string parse)
 		{
 			switch (parse)
 			{
@@ -328,7 +328,7 @@ namespace TUGraz.VectoCommon.BusAuxiliaries
 				case HEATING_AND_COOLING: return HeatPumpMode.heating_and_cooling;
 				case COOLING: return HeatPumpMode.cooling;
 				case N_A: return HeatPumpMode.N_A;
-				default: return null;
+				default: throw new InvalidEnumArgumentException("HeatPumpMode"); 
 			}
 		}
 
diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
index b54fd50bbd..0311392115 100644
--- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
+++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs
@@ -895,9 +895,8 @@ namespace TUGraz.VectoCommon.InputData
 		HeatPumpType? HeatPumpTypeDriverCompartment { get; }
 		
 		HeatPumpMode? HeatPumpModeDriverCompartment { get; }
-
-		IList<HeatPumpType> HeatPumpTypePassengerCompartments { get; }
-		IList<HeatPumpMode> HeatPumpModePassengerCompartments { get; }
+		
+		IList<Tuple<HeatPumpType, HeatPumpMode>> HeatPumpPassengerCompartments { get; }
 
 		Watt AuxHeaterPower { get; }
 
diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs
index 581d2c72da..d3c28e7c63 100644
--- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs
@@ -714,8 +714,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
         public virtual BusHVACSystemConfiguration? SystemConfiguration { get; set; }
 		public virtual HeatPumpType? HeatPumpTypeDriverCompartment { get { return null; } }
 		public virtual HeatPumpMode? HeatPumpModeDriverCompartment { get { return null; } }
-		public virtual IList<HeatPumpType> HeatPumpTypePassengerCompartments { get { return null; } }
-		public virtual IList<HeatPumpMode> HeatPumpModePassengerCompartments { get { return null; } }
+		public virtual IList<Tuple<HeatPumpType, HeatPumpMode>> HeatPumpPassengerCompartments
+		{
+			get { return null; }
+		}
 		public virtual Watt AuxHeaterPower { get { return null; } }
         public virtual bool? DoubleGlazing { get { return false; } }
 		public virtual bool HeatPump { get { return false; } }
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
index 988d466099..44b1c188e4 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
 using System.Linq;
 using System.Xml;
 using System.Xml.Linq;
@@ -217,8 +218,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 
 		public virtual HeatPumpType? HeatPumpTypeDriverCompartment { get { return null; } }
 		public virtual HeatPumpMode? HeatPumpModeDriverCompartment { get { return null; } }
-		public virtual IList<HeatPumpType> HeatPumpTypePassengerCompartments { get { return null; } }
-		public virtual IList<HeatPumpMode> HeatPumpModePassengerCompartments { get { return null; } }
+		public virtual IList<Tuple<HeatPumpType, HeatPumpMode>> HeatPumpPassengerCompartments
+		{
+			get { return null; }
+		}
 
 		public virtual Watt AuxHeaterPower
 		{
@@ -392,9 +395,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 		private bool IsBusHVACTagEmpty()
 		{
 			return SystemConfiguration == null && HeatPumpTypeDriverCompartment == null && HeatPumpModeDriverCompartment == null &&
-					HeatPumpTypePassengerCompartments?.Any() != true  && HeatPumpModePassengerCompartments?.Any() != true &&
-					AuxHeaterPower == null && DoubleGlazing == null && AdjustableAuxiliaryHeater == null && SeparateAirDistributionDucts == null && 
-					WaterElectricHeater == null && AirElectricHeater == null && OtherHeatingTechnology == null ;
+					HeatPumpPassengerCompartments?.Any() != true && AuxHeaterPower == null && DoubleGlazing == null && 
+					AdjustableAuxiliaryHeater == null && SeparateAirDistributionDucts == null && WaterElectricHeater == null &&
+					AirElectricHeater == null && OtherHeatingTechnology == null ;
 		}
 
 		public override XmlNode XMLSource
@@ -431,61 +434,43 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
 					return HeatPumpMode.N_A;
 				
 				return ElementExists(XMLNames.Bus_HeatPumpModeDriver)
-					? HeatPumpModeHelper.Parse(GetString(XMLNames.Bus_HeatPumpModeDriver)) : null;
-			}
-		}
-		
-		public override IList<HeatPumpType> HeatPumpTypePassengerCompartments
-		{
-			get 
-			{
-				return ElementExists(XMLNames.Bus_HeatPumpTypePassenger) 
-						? GetHeatPumpTypePassengerCompartments() : null;
+					? (HeatPumpMode?)HeatPumpModeHelper.Parse(GetString(XMLNames.Bus_HeatPumpModeDriver)) : null;
 			}
 		}
-		
-		private IList<HeatPumpType> GetHeatPumpTypePassengerCompartments()
-		{
-			var pumpTypeNodes = GetNodes(XMLNames.Bus_HeatPumpTypePassenger);
-			if (pumpTypeNodes == null)
-				return null;
 
-			var pumpTypes = new List<HeatPumpType>();
 
-			foreach (XmlNode pumpTypeNode in pumpTypeNodes) {
-				var entry = HeatPumpTypeHelper.Parse(pumpTypeNode?.InnerText);
-				pumpTypes.Add(entry);
-			}
 
-			return pumpTypes.Any() != true ? null : pumpTypes;
-		}
-		
-		public override IList<HeatPumpMode> HeatPumpModePassengerCompartments
+		public override IList<Tuple<HeatPumpType, HeatPumpMode>> HeatPumpPassengerCompartments
 		{
 			get
 			{
-				return ElementExists(XMLNames.Bus_HeatPumpModePassenger)
-					? GetHeatPumpModePassengerCompartments() : null;
+				return ElementExists(XMLNames.Bus_HeatPumpTypePassenger) 
+						&& ElementExists(XMLNames.Bus_HeatPumpModePassenger) 
+							? GetHeatPumpPassengerCompartments() : null;
 			}
 		}
 
-		private IList<HeatPumpMode> GetHeatPumpModePassengerCompartments()
+		private IList<Tuple<HeatPumpType, HeatPumpMode>> GetHeatPumpPassengerCompartments()
 		{
+			var pumpTypeNodes = GetNodes(XMLNames.Bus_HeatPumpTypePassenger);
 			var pumpModeNodes = GetNodes(XMLNames.Bus_HeatPumpModePassenger);
-			if (pumpModeNodes == null)
-				return null;
 			
-			var pumpModes = new List<HeatPumpMode>();
-			foreach (XmlNode pumpMode in pumpModeNodes)
-			{
-				var entry = HeatPumpModeHelper.Parse(pumpMode?.InnerText);
-				if (entry != null)
-					pumpModes.Add((HeatPumpMode)entry);
-			}
+			if (pumpTypeNodes == null || pumpModeNodes == null)
+				return null;
+			if (pumpTypeNodes.Count != pumpModeNodes.Count )
+				return null;
+
+			var heatPumps = new List<Tuple<HeatPumpType, HeatPumpMode>>();
 
-			return pumpModes.Any() != true ? null : pumpModes;
+			for (int i = 0; i < pumpTypeNodes.Count; i++) {
+				var pumpType = HeatPumpTypeHelper.Parse(pumpTypeNodes[i]?.InnerText);
+				var pumpMode = HeatPumpModeHelper.Parse(pumpModeNodes[i]?.InnerText);
+				heatPumps.Add(new Tuple<HeatPumpType, HeatPumpMode>(pumpType, pumpMode));
+			}
+			
+			return heatPumps.Any() != true ? null : heatPumps;
 		}
-		
+
 		public override Watt AuxHeaterPower
 		{
 			get
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
index b4c92f45c0..14c5196145 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs
@@ -1215,20 +1215,12 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl
 			}
 		}
 
-		public IList<HeatPumpType> HeatPumpTypePassengerCompartments
+		public IList<Tuple<HeatPumpType, HeatPumpMode>> HeatPumpPassengerCompartments
 		{
 			get
 			{
-				return GetHVACBusAuxPropertyValue<IList<HeatPumpType>>(nameof(HeatPumpTypePassengerCompartments));
-
-			}
-		}
-
-		public IList<HeatPumpMode> HeatPumpModePassengerCompartments
-		{
-			get
-			{
-				return GetHVACBusAuxPropertyValue<IList<HeatPumpMode>>(nameof(HeatPumpModePassengerCompartments));
+				return GetHVACBusAuxPropertyValue<IList<Tuple<HeatPumpType, HeatPumpMode>>>(
+					nameof(HeatPumpPassengerCompartments));
 			}
 		}
 
diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs
index 8773b7b6d6..18c5ab367b 100644
--- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs
+++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs
@@ -210,8 +210,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
 			if (busAux.HeatPumpTypeDriverCompartment == null) {
 				throw new VectoException("HeatPumpTypeDriverCompartment input parameter is required");
 			}
-			if (busAux.HeatPumpTypePassengerCompartments == null) {
-				throw new VectoException("HeatPumpTypePassengerCompartment input parameter is required");
+			if (busAux.HeatPumpPassengerCompartments == null) {
+				throw new VectoException("HeatPumpPassengerCompartments input parameter is required");
 			}
 			if (busAux.HeatPumpModeDriverCompartment == null || (busAux.HeatPumpTypeDriverCompartment != HeatPumpType.none && busAux.HeatPumpModeDriverCompartment.Value == HeatPumpMode.N_A)) {
 				throw new VectoException("HeatPumpTypeDriverCompartment input parameter is required");
diff --git a/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs
index 07987be178..eb0cd3bed6 100644
--- a/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs
+++ b/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs
@@ -447,11 +447,9 @@ namespace TUGraz.VectoCore.OutputData.XML
 
 			if (hvac.SystemConfiguration == null &&
 				hvac.HeatPumpModeDriverCompartment == null && hvac.HeatPumpTypeDriverCompartment == null &&
-				hvac.HeatPumpModePassengerCompartments?.Any() != true && hvac.HeatPumpTypePassengerCompartments?.Any() != true &&
-				hvac.AuxHeaterPower == null && hvac.DoubleGlazing == null && hvac.AdjustableAuxiliaryHeater == null &&
-				hvac.SeparateAirDistributionDucts == null && hvac.WaterElectricHeater == null &&
-				hvac.AirElectricHeater == null &&
-				hvac.OtherHeatingTechnology == null)
+				hvac.HeatPumpPassengerCompartments?.Any() != true && hvac.AuxHeaterPower == null && hvac.DoubleGlazing == null && 
+				hvac.AdjustableAuxiliaryHeater == null && hvac.SeparateAirDistributionDucts == null &&
+				hvac.WaterElectricHeater == null && hvac.AirElectricHeater == null && hvac.OtherHeatingTechnology == null)
 				return null;
 
 			return new XElement(v28 + XMLNames.BusAux_HVAC,
@@ -461,7 +459,7 @@ namespace TUGraz.VectoCore.OutputData.XML
 					? new XElement(v28 + XMLNames.Bus_HeatPumpTypeDriver, hvac.HeatPumpTypeDriverCompartment.GetLabel()) : null,
 				hvac.HeatPumpModeDriverCompartment != null
 					? new XElement(v28 + XMLNames.Bus_HeatPumpModeDriver, hvac.HeatPumpModeDriverCompartment.GetLabel()) : null,
-				GetHeatPumpPassengerCompartments(hvac.HeatPumpTypePassengerCompartments, hvac.HeatPumpModePassengerCompartments),
+				GetHeatPumpPassengerCompartments(hvac.HeatPumpPassengerCompartments),
 				hvac.AuxHeaterPower != null
 					? new XElement(v28 + XMLNames.Bus_AuxiliaryHeaterPower, hvac.AuxHeaterPower.ToXMLFormat(0)) : null,
 				hvac.DoubleGlazing != null
@@ -479,19 +477,16 @@ namespace TUGraz.VectoCore.OutputData.XML
 			);
 		}
 		
-		private IList<XElement> GetHeatPumpPassengerCompartments(IList<HeatPumpType> pumpTypes, IList<HeatPumpMode> pumpModes)
+		private IList<XElement> GetHeatPumpPassengerCompartments(IList<Tuple<HeatPumpType,HeatPumpMode>> heatPumps)
 		{
-			if (pumpTypes?.Any() != true || pumpModes?.Any() != true)
+			if (heatPumps?.Any() != true)
 				return null;
-
-			if (pumpTypes.Count != pumpModes.Count)
-				return null;
-
+			
 			var result = new List<XElement>();
 
-			for (int i = 0; i < pumpTypes.Count; i++) {
-				result.Add(new XElement(v28 + XMLNames.Bus_HeatPumpTypePassenger, pumpTypes[i].GetLabel()));
-				result.Add(new XElement(v28 + XMLNames.Bus_HeatPumpModePassenger, pumpModes[i].GetLabel()));
+			for (int i = 0; i < heatPumps.Count; i++) {
+				result.Add(new XElement(v28 + XMLNames.Bus_HeatPumpTypePassenger, heatPumps[i].Item1.GetLabel()));
+				result.Add(new XElement(v28 + XMLNames.Bus_HeatPumpModePassenger, heatPumps[i].Item2.GetLabel()));
 			}
 
 			return result;
diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusConsolidatedInputDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusConsolidatedInputDataTest.cs
index cf6a7a7c1f..1783c6af9c 100644
--- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusConsolidatedInputDataTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusConsolidatedInputDataTest.cs
@@ -92,8 +92,9 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.AreEqual(BusHVACSystemConfiguration.Configuration1, busHVACAux.SystemConfiguration);
 			Assert.AreEqual(HeatPumpType.non_R_744_2_stage, busHVACAux.HeatPumpTypeDriverCompartment);
 			Assert.AreEqual(HeatPumpMode.heating, busHVACAux.HeatPumpModeDriverCompartment);
-			Assert.AreEqual(HeatPumpType.non_R_744_3_stage, busHVACAux.HeatPumpTypePassengerCompartments[0]);
-			Assert.AreEqual(HeatPumpMode.cooling, busHVACAux.HeatPumpModePassengerCompartments[0]);
+			Assert.AreEqual(1, busHVACAux.HeatPumpPassengerCompartments.Count);
+			Assert.AreEqual(HeatPumpType.non_R_744_3_stage, busHVACAux.HeatPumpPassengerCompartments[0].Item1);
+			Assert.AreEqual(HeatPumpMode.cooling, busHVACAux.HeatPumpPassengerCompartments[0].Item2);
 			Assert.AreEqual(50, busHVACAux.AuxHeaterPower.Value());
 			Assert.AreEqual(false, busHVACAux.DoubleGlazing);
 			Assert.AreEqual(true, busHVACAux.AdjustableAuxiliaryHeater);
diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs
index f90cb017a4..304fb15fdc 100644
--- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs
@@ -632,10 +632,9 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.AreEqual(BusHVACSystemConfiguration.Configuration1, hvacAux.SystemConfiguration);
 			Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpTypeDriverCompartment);
 			Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpModeDriverCompartment);
-			Assert.AreEqual(1, hvacAux.HeatPumpTypePassengerCompartments.Count);
-			Assert.AreEqual(1, hvacAux.HeatPumpModePassengerCompartments.Count);
-			Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpTypePassengerCompartments[0]);
-			Assert.AreEqual(HeatPumpMode.cooling, hvacAux.HeatPumpModePassengerCompartments[0]);
+			Assert.AreEqual(1, hvacAux.HeatPumpPassengerCompartments.Count);
+			Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpPassengerCompartments[0].Item1);
+			Assert.AreEqual(HeatPumpMode.cooling, hvacAux.HeatPumpPassengerCompartments[0].Item2);
 			Assert.AreEqual(50.SI<Watt>(), hvacAux.AuxHeaterPower);
 			Assert.AreEqual(false, hvacAux.DoubleGlazing);
 			Assert.AreEqual(true, hvacAux.AdjustableAuxiliaryHeater);
@@ -749,10 +748,9 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.AreEqual(BusHVACSystemConfiguration.Configuration0, hvacAux.SystemConfiguration);
 			Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpTypeDriverCompartment);
 			Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpModeDriverCompartment);
-			Assert.AreEqual(1, hvacAux.HeatPumpTypePassengerCompartments.Count);
-			Assert.AreEqual(1, hvacAux.HeatPumpModePassengerCompartments.Count);
-			Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpTypePassengerCompartments[0]);
-			Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpModePassengerCompartments[0]);
+			Assert.AreEqual(1, hvacAux.HeatPumpPassengerCompartments.Count);
+			Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpPassengerCompartments[0].Item1);
+			Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpPassengerCompartments[0].Item2);
 			Assert.AreEqual(40.SI<Watt>(), hvacAux.AuxHeaterPower);
 			Assert.AreEqual(false, hvacAux.DoubleGlazing);
 			Assert.AreEqual(false, hvacAux.AdjustableAuxiliaryHeater);
diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs
index d98dd858cf..cdfa32bbdd 100644
--- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs
@@ -112,12 +112,11 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.AreEqual(BusHVACSystemConfiguration.Configuration0, hvacAux.SystemConfiguration);
 			Assert.AreEqual(HeatPumpType.none, hvacAux.HeatPumpTypeDriverCompartment);
 			Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpModeDriverCompartment);
-			Assert.AreEqual(2, hvacAux.HeatPumpTypePassengerCompartments.Count);
-			Assert.AreEqual(2, hvacAux.HeatPumpModePassengerCompartments.Count);
-			Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpTypePassengerCompartments[0]);
-			Assert.AreEqual(HeatPumpMode.cooling, hvacAux.HeatPumpModePassengerCompartments[0]);
-			Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpTypePassengerCompartments[1]);
-			Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpModePassengerCompartments[1]);
+			Assert.AreEqual(2, hvacAux.HeatPumpPassengerCompartments.Count);
+			Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpPassengerCompartments[0].Item1);
+			Assert.AreEqual(HeatPumpMode.cooling, hvacAux.HeatPumpPassengerCompartments[0].Item2);
+			Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpPassengerCompartments[1].Item1);
+			Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpPassengerCompartments[1].Item2);
 			Assert.AreEqual(50, hvacAux.AuxHeaterPower.Value());
 			Assert.AreEqual(false, hvacAux.DoubleGlazing);
 			Assert.AreEqual(true, hvacAux.AdjustableAuxiliaryHeater);
-- 
GitLab