From c30ced7fa6be2361bb03d6cecb405b46ff229fba Mon Sep 17 00:00:00 2001 From: Harald Martini <harald.martini@student.tugraz.at> Date: Tue, 3 May 2022 16:51:01 +0200 Subject: [PATCH] renamed DataReader to RunDataFactory --- .../Models/Simulation/ISimulatorFactory.cs | 5 +- .../Impl/SimulatorFactory/SimulatorFactory.cs | 7 +- .../SimulatorFactoryDeclaration.cs | 24 ++- .../SimulatorFactoryEngineering.cs | 8 +- .../CompletedBusFactorMethodTest.cs | 8 +- .../CompletedBusSanityCheckTests.cs | 4 +- .../Integration/MockUpVectoTest.cs | 143 ++++++++++++++++++ .../Integration/TorqueLimitsTest.cs | 8 +- .../Declaration/InputDataSanityChecks.cs | 4 +- 9 files changed, 179 insertions(+), 32 deletions(-) create mode 100644 VectoCore/VectoCoreTest/Integration/MockUpVectoTest.cs diff --git a/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs index 878c80f6a2..9682c1e447 100644 --- a/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs @@ -44,13 +44,16 @@ namespace TUGraz.VectoCore.Models.Simulation bool Validate { get; set; } SummaryDataContainer SumData { get; set; } int JobNumber { get; set; } - IVectoRunDataFactory DataReader { get; } + IVectoRunDataFactory RunDataFactory { get; } ISimulatorFactory FollowUpSimulatorFactory { get; } IOutputDataWriter ReportWriter { get; } bool SerializeVectoRunData { get; set; } bool CreateFollowUpSimulatorFactory { get; set; } + + bool MockUpRun { get; set; } + /// <summary> /// Creates powertrain and initializes it with the component's data. /// </summary> diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs index bba97fd261..d142473722 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs @@ -69,6 +69,9 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory protected bool _simulate = true; + //TODO: set with preprocessor directive remove from interface + public bool MockUpRun { get; set; } = true; + public ISimulatorFactory FollowUpSimulatorFactory { @@ -133,7 +136,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory public bool Validate { get; set; } - public IVectoRunDataFactory DataReader { get; protected set; } + public IVectoRunDataFactory RunDataFactory { get; protected set; } public SummaryDataContainer SumData { get; set; } @@ -158,7 +161,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory if (!_simulate) { yield break; } - foreach (var data in DataReader.NextRun()) { + foreach (var data in RunDataFactory.NextRun()) { var current = i++; var d = data; data.JobRunId = current; diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs index c376f56987..5ecbf855cd 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs @@ -5,6 +5,7 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.InputData; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.InputData.Reader; using TUGraz.VectoCore.InputData.Reader.Impl; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; @@ -51,8 +52,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory _simulate = CanBeSimulated(dataProvider); if (_simulate) { - //CreateDeclarationDataReader(_currentStageInputData, _currentStageDeclarationReport, _currentStageVTPReport); - DataReader = runDataFactoryFactory.CreateDeclarationRunDataFactory(_currentStageInputData, _currentStageDeclarationReport, + if (MockUpRun) { + runDataFactoryFactory = new VectoMockUpRunDataFactoryFactory(); + } + + RunDataFactory = runDataFactoryFactory.CreateDeclarationRunDataFactory(_currentStageInputData, _currentStageDeclarationReport, _currentStageVTPReport); } else { System.Diagnostics.Debug.Assert(_followUpSimulatorFactoryCreator == null, @@ -60,12 +64,6 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory } } - private void CreateReport() - { - if (_currentStageDeclarationReport != null && _currentStageInputData != null) { - - } - } /// <summary> @@ -152,19 +150,19 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory { switch (dataProvider) { case IVTPDeclarationInputDataProvider vtpProvider: { - DataReader = CreateRunDataReader(vtpProvider, vtpReport); + RunDataFactory = CreateRunDataReader(vtpProvider, vtpReport); return; } case ISingleBusInputDataProvider singleBusProvider: { - DataReader = CreateRunDataReader(singleBusProvider, declarationReport); + RunDataFactory = CreateRunDataReader(singleBusProvider, declarationReport); return; } case IDeclarationInputDataProvider declDataProvider: { - DataReader = CreateRunDataReader(declDataProvider, declarationReport); + RunDataFactory = CreateRunDataReader(declDataProvider, declarationReport); return; } case IMultistageVIFInputData multistageVifInputData: { - DataReader = CreateRunDataReader(multistageVifInputData, declarationReport); + RunDataFactory = CreateRunDataReader(multistageVifInputData, declarationReport); return; } case IMultistagePrimaryAndStageInputDataProvider multiStagePrimaryAndStageInputData: { @@ -179,7 +177,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory var tempPrimaryReport = new XMLDeclarationReportPrimaryVehicle(tempOutputWriter, true); - DataReader = CreateRunDataReader(multiStagePrimaryAndStageInputData.PrimaryVehicle, tempPrimaryReport); + RunDataFactory = CreateRunDataReader(multiStagePrimaryAndStageInputData.PrimaryVehicle, tempPrimaryReport); CreateFollowUpSimulatorFactory = true; diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryEngineering.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryEngineering.cs index 61aaef20da..6b195d2045 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryEngineering.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryEngineering.cs @@ -17,16 +17,16 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory { switch (dataProvider) { case IVTPEngineeringInputDataProvider vtpProvider when vtpProvider.JobInputData.Vehicle.VehicleCategory.IsLorry(): - DataReader = new EngineeringVTPModeVectoRunDataFactoryLorries(vtpProvider); + RunDataFactory = new EngineeringVTPModeVectoRunDataFactoryLorries(vtpProvider); return; case IVTPEngineeringInputDataProvider vtpProvider when vtpProvider.JobInputData.Vehicle.VehicleCategory.IsBus(): - DataReader = new EngineeringVTPModeVectoRunDataFactoryHeavyBusPrimary(vtpProvider); + RunDataFactory = new EngineeringVTPModeVectoRunDataFactoryHeavyBusPrimary(vtpProvider); return; case IEngineeringInputDataProvider engDataProvider when engDataProvider.JobInputData.JobType == VectoSimulationJobType.EngineOnlySimulation: - DataReader = new EngineOnlyVectoRunDataFactory(engDataProvider); + RunDataFactory = new EngineOnlyVectoRunDataFactory(engDataProvider); return; case IEngineeringInputDataProvider engDataProvider: - DataReader = new EngineeringModeVectoRunDataFactory(engDataProvider); + RunDataFactory = new EngineeringModeVectoRunDataFactory(engDataProvider); return; default: throw new VectoException("Unknown InputData for Engineering Mode!"); diff --git a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs index d78e66dd6b..10d6045767 100644 --- a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs +++ b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs @@ -117,7 +117,7 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus //var jobContainer = new JobContainer(sumContainer); - var runs = factory.DataReader.NextRun().ToList(); + var runs = factory.RunDataFactory.NextRun().ToList(); Assert.IsTrue(runs.Count == 8 || runs.Count == 12); var relatedRuns = SetRelatedVehicleParts(runs); @@ -1039,7 +1039,7 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus // Validate = false //}; - var runs = factory.DataReader.NextRun().ToList(); + var runs = factory.RunDataFactory.NextRun().ToList(); return runs; } @@ -1202,7 +1202,7 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus // Validate = false //}; - var runs = factory.DataReader.NextRun().ToList(); + var runs = factory.RunDataFactory.NextRun().ToList(); var run = runs[runIdx]; Assert.NotNull(run.VehicleData.PassengerCount); @@ -1239,7 +1239,7 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus // //ActualModalData = true, // Validate = false //}; - var runs = factory.DataReader.NextRun().ToList(); + var runs = factory.RunDataFactory.NextRun().ToList(); var run = runs[runIdx]; Assert.NotNull(run.VehicleData.PassengerCount); diff --git a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusSanityCheckTests.cs b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusSanityCheckTests.cs index 25b57db546..9468054659 100644 --- a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusSanityCheckTests.cs +++ b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusSanityCheckTests.cs @@ -71,7 +71,7 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus factory.Validate = false; AssertHelper.Exception<VectoException>(() => { - var runs = factory.DataReader.NextRun().ToList();}, messageContains: "Input parameter 'separate air distribution ducts' has to be set to 'true' for vehicle group "); + var runs = factory.RunDataFactory.NextRun().ToList();}, messageContains: "Input parameter 'separate air distribution ducts' has to be set to 'true' for vehicle group "); } [ @@ -119,7 +119,7 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus factory.Validate = false; //AssertHelper.Exception<VectoException>(() => { - var runs = factory.DataReader.NextRun().ToList(); + var runs = factory.RunDataFactory.NextRun().ToList(); //}, messageContains: "Input parameter 'separate air distribution ducts' has to be set to 'true' for vehicle group "); } diff --git a/VectoCore/VectoCoreTest/Integration/MockUpVectoTest.cs b/VectoCore/VectoCoreTest/Integration/MockUpVectoTest.cs new file mode 100644 index 0000000000..4a2ef2dd60 --- /dev/null +++ b/VectoCore/VectoCoreTest/Integration/MockUpVectoTest.cs @@ -0,0 +1,143 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.VisualStudio.TestPlatform.Utilities; +using Ninject; +using NUnit.Framework; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.OutputData; +using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader; +using TUGraz.VectoCore.Models.Simulation; +using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.OutputData; +using TUGraz.VectoCore.OutputData.FileIO; + +namespace TUGraz.VectoCore.Tests.Integration +{ + [TestFixture] + public class MockUpVectoTest + { + + + + + private IKernel _vectoKernel; + private ISimulatorFactoryFactory _simFactoryFactory; + private ISimulatorFactory _simulatorFactory; + private IXMLInputDataReader _inputDataReader; + + #region TestFiles + protected const string ConventionalHeavyLorry = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\HeavyLorry\Conventional_heavyLorry_AMT.xml"; + protected const string HEV_Px_HeavyLorry = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\HeavyLorry\HEV_heavyLorry_AMT_Px_IHPC.xml"; + protected const string HEV_S2_HeavyLorry = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\HeavyLorry\HEV-S_heavyLorry_AMT_S2.xml"; + protected const string HEV_S3_HeavyLorry = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\HeavyLorry\HEV-S_heavyLorry_S3.xml"; + protected const string HEV_S4_HeavyLorry = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\HeavyLorry\HEV-S_heavyLorry_S4.xml"; + protected const string HEV_IEPC_S_HeavyLorry = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\HeavyLorry\HEV-S_heavyLorry_IEPC-S.xml"; + protected const string PEV_E2_HeavyLorry = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\HeavyLorry\PEV_heavyLorry_AMT_E2.xml"; + protected const string PEV_E3_HeavyLorry = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\HeavyLorry\PEV_heavyLorry_E3.xml"; + protected const string PEV_E4_HeavyLorry = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\HeavyLorry\PEV_heavyLorry_E4.xml"; + protected const string PEV_IEPC_HeavyLorry = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\HeavyLorry\IEPC_heavyLorry.xml"; + + protected const string Conventional_PrimaryBus = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\Conventional_primaryBus_AMT.xml"; + protected const string HEV_Px_IHPC_PrimaryBus = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\HEV_primaryBus_AMT_Px.xml"; + protected const string HEV_S2_PrimaryBus = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\HEV-S_primaryBus_AMT_S2.xml"; + protected const string HEV_S3_PrimaryBus = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\HEV-S_primaryBus_S3.xml"; + protected const string HEV_S4_PrimaryBus = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\HEV-S_primaryBus_S4.xml"; + protected const string HEV_IEPC_S_PrimaryBus = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\HEV-S_primaryBus_IEPC-S.xml"; + protected const string PEV_E2_PrimaryBus = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\PEV_primaryBus_AMT_E2.xml"; + protected const string PEV_E3_PrimaryBus = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\PEV_primaryBus_E3.xml"; + protected const string PEV_E4_PrimaryBus = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\PEV_primaryBus_E4.xml"; + protected const string PEV_IEPC_PrimaryBus = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.4\Distributed\PrimaryBus\IEPC_primaryBus.xml"; + + + protected const string Conventional_CompletedBus = @"TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_conventional_final_vif.VIF_Report_1.xml"; + + #endregion + + + [OneTimeSetUp] + public void OneTimeSetup() + { + _vectoKernel = new StandardKernel( + new VectoNinjectModule() + ); + + _simFactoryFactory = _vectoKernel.Get<ISimulatorFactoryFactory>(); + Assert.NotNull(_simFactoryFactory); + _inputDataReader = _vectoKernel.Get<IXMLInputDataReader>(); + Assert.NotNull(_inputDataReader); + } + + public void Setup() + { + + + } + + public IOutputDataWriter GetOutputFileWriter(string subDirectory, string originalFilePath) + { + var path = Path.Combine(Path.Combine(Path.GetFullPath(subDirectory)), Path.GetFileName(originalFilePath)); + return new FileOutputWriter(path); + } + + + + + + [TestCase(ConventionalHeavyLorry)] + public void ConventionalHeavyLorryMockupTest(string fileName) + { + var inputProvider = _inputDataReader.Create(fileName); + var fileWriter = GetOutputFileWriter(nameof(ConventionalHeavyLorryMockupTest), fileName); + var sumWriter = new SummaryDataContainer(fileWriter); + var jobContainer = new JobContainer(sumWriter); + + _simulatorFactory = + _simFactoryFactory.Factory(ExecutionMode.Declaration, inputProvider, fileWriter, true); + _simulatorFactory.MockUpRun = true; + + jobContainer.AddRuns(_simulatorFactory); + jobContainer.Execute(true); + jobContainer.WaitFinished(); + + + + + } + + + + + + + + + + + } +} diff --git a/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs b/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs index 79b9d6d565..b43312098f 100644 --- a/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs +++ b/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs @@ -95,7 +95,7 @@ namespace TUGraz.VectoCore.Tests.Integration var inputDataProvider = JSONInputDataFactory.ReadJsonJob(GearboxLimitJobDecl_865); var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); - var run = factory.DataReader.NextRun().First(); + var run = factory.RunDataFactory.NextRun().First(); var engineData = run.EngineData; @@ -122,7 +122,7 @@ namespace TUGraz.VectoCore.Tests.Integration var inputDataProvider = JSONInputDataFactory.ReadJsonJob(GearboxLimitJobDecl_800); var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); - var run = factory.DataReader.NextRun().First(); + var run = factory.RunDataFactory.NextRun().First(); var engineData = run.EngineData; @@ -149,7 +149,7 @@ namespace TUGraz.VectoCore.Tests.Integration var inputDataProvider = JSONInputDataFactory.ReadJsonJob(VehicleLimitJobDecl_910); var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); - var run = factory.DataReader.NextRun().First(); + var run = factory.RunDataFactory.NextRun().First(); var engineData = run.EngineData; @@ -176,7 +176,7 @@ namespace TUGraz.VectoCore.Tests.Integration var inputDataProvider = JSONInputDataFactory.ReadJsonJob(VehicleLimitJobDecl_850); var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); - var run = factory.DataReader.NextRun().First(); + var run = factory.RunDataFactory.NextRun().First(); var engineData = run.EngineData; diff --git a/VectoCore/VectoCoreTest/Models/Declaration/InputDataSanityChecks.cs b/VectoCore/VectoCoreTest/Models/Declaration/InputDataSanityChecks.cs index 3f8c30de25..f1de743fc3 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/InputDataSanityChecks.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/InputDataSanityChecks.cs @@ -57,7 +57,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration factory.WriteModalResults = true; factory.Validate = false; - var runs = factory.DataReader.NextRun().ToList(); + var runs = factory.RunDataFactory.NextRun().ToList(); Assert.IsTrue(runs.Count > 0); } @@ -89,7 +89,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration factory.Validate = false; AssertHelper.Exception<VectoException>(() => { - var runs = factory.DataReader.NextRun().ToList(); + var runs = factory.RunDataFactory.NextRun().ToList(); }, messageContains: $"Number of steering pump technologies does not match number of steered axles ({numStreeredAxles}, {steeringPumpTechnologies.Length})"); } -- GitLab