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