From d53debdcd1aeb8ebf25ddb1bcdd77879a856cae2 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Fri, 23 Jul 2021 10:01:34 +0200
Subject: [PATCH] added testcase for passenger count

---
 .../CompletedBusFactorMethodTest.cs           | 58 +++++++++++++++++++
 VectoCore/VectoCoreTest/Utils/CompletedVIF.cs | 14 ++++-
 2 files changed, 69 insertions(+), 3 deletions(-)

diff --git a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs
index 52884da0ee..d5619adb0b 100644
--- a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs
@@ -1132,6 +1132,64 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus
 			//Assert.IsTrue(jobContainer.Runs.All(r => r.Success), String.Concat<Exception>(jobContainer.Runs.Select(r => r.ExecException)));
 		}
 
+		private const string JobGrp32b = @"TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b_ES-AUX.vecto";
+
+		[
+		TestCase(JobGrp32b, 2, 20, 5, 17, 9, 51, TestName = "CompleteBus PassengerCount IU specific RL"),
+		TestCase(JobGrp32b, 3, 20, 5, 17, 9, 49.572, TestName = "CompleteBus PassengerCount IU generic RL"),
+		TestCase(JobGrp32b, 6, 20, 5, 17, 9, 37, TestName = "CompleteBus PassengerCount CO specific RL"),
+		TestCase(JobGrp32b, 7, 20, 5, 17, 9, 38.556, TestName = "CompleteBus PassengerCount CO generic RL"),
+		]
+		public void TestPassengerCountAllocationCompletedBus(string jobName, int runIdx, int pSeatsLower, int pStdLower, int pSeatsUpper, int pStdUpper,  double expectedPassengers)
+		{
+			var inputData = CompletedVIF.CreateCompletedVifXML(
+				JSONInputDataFactory.ReadJsonJob(JobFile_Group41) as JSONInputDataCompletedBusFactorMethodV7,
+				xmlInputReader);
+
+			var modified = GetModifiedXML(inputData, pSeatsLower, pStdLower, pSeatsUpper, pStdUpper);
+
+			var writer = new FileOutputWriter("SanityCheckTest");
+			//var inputData = new MockCompletedBusInputData(XmlReader.Create(PifFile_33_34), modified);
+			//var inputData = new MockCompletedBusInputData(modified);
+
+			var factory = new SimulatorFactory(ExecutionMode.Declaration, new XMLDeclarationVIFInputData(modified, null), writer) {
+				WriteModalResults = true,
+				Validate = false
+			};
+
+			var runs = factory.DataReader.NextRun().ToList();
+			var run = runs[runIdx];
+			
+			Assert.NotNull(run.VehicleData.PassengerCount);
+			Assert.AreEqual(expectedPassengers, run.VehicleData.PassengerCount.Value, 1e-3);
+
+			var ssmInputs = run.BusAuxiliaries.SSMInputs as ISSMDeclarationInputs;
+			Assert.NotNull(ssmInputs);
+			Assert.AreEqual(expectedPassengers + 1, ssmInputs.NumberOfPassengers, 1e-3); // adding driver for SSM
+		}
+
+		private IMultistageBusInputDataProvider GetModifiedXML(string vifXML, int pSeatsLower, int pStdLower, int pSeatsUpper, int pStdUpper)
+		{
+			var vif = new XmlDocument();
+			vif.LoadXml(vifXML);
+
+			var pSeatsLowerNode = vif.SelectSingleNode("//*[local-name()='NumberPassengerSeatsLowerDeck']");
+			pSeatsLowerNode.InnerText = pSeatsLower.ToString();
+
+			var pStdLowerNode = vif.SelectSingleNode("//*[local-name()='NumberPassengersStandingLowerDeck']");
+			pStdLowerNode.InnerText = pStdLower.ToString();
+
+			var pSeatsUpperNode = vif.SelectSingleNode("//*[local-name()='NumberPassengerSeatsUpperDeck']");
+			pSeatsUpperNode.InnerText = pSeatsUpper.ToString();
+
+			var pStdUpperNode = vif.SelectSingleNode("//*[local-name()='NumberPassengersStandingUpperDeck']");
+			pStdUpperNode.InnerText = pStdUpper.ToString();
+
+			var completedVif = xmlInputReader.CreateDeclaration(XmlReader.Create(new StringReader(vif.OuterXml)));
+			return completedVif  as IMultistageBusInputDataProvider;
+		}
+
+
 		//[TestCase(@"E:\QUAM\tmp\primary_heavyBus group 42_SmartPS_spec engine map.xml", 0),]
 		public void TestRunPrimaryBusSimulationSngle(string jobName, int runIdx)
 		{
diff --git a/VectoCore/VectoCoreTest/Utils/CompletedVIF.cs b/VectoCore/VectoCoreTest/Utils/CompletedVIF.cs
index cfb858ef85..422e16c976 100644
--- a/VectoCore/VectoCoreTest/Utils/CompletedVIF.cs
+++ b/VectoCore/VectoCoreTest/Utils/CompletedVIF.cs
@@ -14,7 +14,8 @@ namespace TUGraz.VectoCore.Tests.Utils
 {
 	public static class CompletedVIF
 	{
-		public static XMLDeclarationVIFInputData CreateCompletedVif(JSONInputDataCompletedBusFactorMethodV7 completedJson,
+		public static string CreateCompletedVifXML(
+			JSONInputDataCompletedBusFactorMethodV7 completedJson,
 			IXMLInputDataReader xmlInputReader)
 		{
 			var vifDataProvider = xmlInputReader.Create(completedJson.PrimaryInputDataFile);
@@ -33,10 +34,17 @@ namespace TUGraz.VectoCore.Tests.Utils
 
 			var completedVifXML = new XmlDocument();
 			completedVifXML.Load(writerAsm.XMLMultistageReportFileName);
+			var retVal = completedVifXML.OuterXml;
+			File.Delete(writerAsm.XMLMultistageReportFileName);
+			return retVal;
+		}
 
+		public static XMLDeclarationVIFInputData CreateCompletedVif(JSONInputDataCompletedBusFactorMethodV7 completedJson,
+			IXMLInputDataReader xmlInputReader)
+		{
 			var completedVif =
-				xmlInputReader.CreateDeclaration(XmlReader.Create(new StringReader(completedVifXML.OuterXml)));
-			File.Delete(writerAsm.XMLMultistageReportFileName);
+				xmlInputReader.CreateDeclaration(XmlReader.Create(new StringReader(CreateCompletedVifXML(completedJson, xmlInputReader))));
+			
 			return new XMLDeclarationVIFInputData(completedVif as IMultistageBusInputDataProvider, null);
 			}
 	}
-- 
GitLab