From ccb2c86b5bffa8497a31c38aa11280bae2417d3c Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Mon, 6 Jul 2015 10:59:00 +0200 Subject: [PATCH] most testcases work again --- VectoCore/Configuration/Constants.cs | 16 +++++++ .../DeclarationModeSimulationDataReader.cs | 4 +- .../Impl/EngineOnlySimulationDataReader.cs | 47 +++++++++++++++++++ .../EngineeringModeSimulationDataReader.cs | 23 ++++++--- .../Simulation/Impl/SimulatorFactory.cs | 7 ++- VectoCore/VectoCore.csproj | 4 +- .../Models/Simulation/SimulationTests.cs | 7 +-- .../CombustionEngineTest.cs | 27 ----------- 8 files changed, 92 insertions(+), 43 deletions(-) create mode 100644 VectoCore/Configuration/Constants.cs create mode 100644 VectoCore/FileIO/Reader/Impl/EngineOnlySimulationDataReader.cs diff --git a/VectoCore/Configuration/Constants.cs b/VectoCore/Configuration/Constants.cs new file mode 100644 index 0000000000..e3b7aa09f0 --- /dev/null +++ b/VectoCore/Configuration/Constants.cs @@ -0,0 +1,16 @@ +namespace TUGraz.VectoCore.Configuration +{ + public class Constants + { + public class FileExtensions + { + public const string ModDataFile = ".vmod"; + + public const string SumFile = ".vsum"; + + public const string VectoJobFile = ".vecto"; + + public const string EngineDataFile = ".veng"; + } + } +} \ No newline at end of file diff --git a/VectoCore/FileIO/Reader/Impl/DeclarationModeSimulationDataReader.cs b/VectoCore/FileIO/Reader/Impl/DeclarationModeSimulationDataReader.cs index abb5264150..1420f5bd74 100644 --- a/VectoCore/FileIO/Reader/Impl/DeclarationModeSimulationDataReader.cs +++ b/VectoCore/FileIO/Reader/Impl/DeclarationModeSimulationDataReader.cs @@ -55,7 +55,7 @@ namespace TUGraz.VectoCore.FileIO.Reader.Impl var segment = GetVehicleClassification((dynamic) Vehicle); foreach (var mission in segment.Missions) { foreach (var loading in mission.Loadings) { - var jobData = new VectoRunData() { + var simulationRunData = new VectoRunData() { VehicleData = CreateVehicleData((dynamic) Vehicle, mission, loading), EngineData = CreateEngineData((dynamic) Engine), GearboxData = CreateGearboxData((dynamic) Gearbox), @@ -65,7 +65,7 @@ namespace TUGraz.VectoCore.FileIO.Reader.Impl IsEngineOnly = false, JobFileName = Job.JobFile, }; - yield return jobData; + yield return simulationRunData; //var builder = new SimulatorFactory.PowertrainBuilder(); } } diff --git a/VectoCore/FileIO/Reader/Impl/EngineOnlySimulationDataReader.cs b/VectoCore/FileIO/Reader/Impl/EngineOnlySimulationDataReader.cs new file mode 100644 index 0000000000..f24b3fc157 --- /dev/null +++ b/VectoCore/FileIO/Reader/Impl/EngineOnlySimulationDataReader.cs @@ -0,0 +1,47 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using TUGraz.VectoCore.Exceptions; +using TUGraz.VectoCore.FileIO.EngineeringFile; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.SimulationComponent.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Impl; + +namespace TUGraz.VectoCore.FileIO.Reader.Impl +{ + public class EngineOnlySimulationDataReader : EngineeringModeSimulationDataReader + { + public override IEnumerable<VectoRunData> NextRun() + { + var job = Job as VectoJobFileV2Engineering; + if (job == null) { + Log.Warn("Job-file is null or unsupported version"); + yield break; + } + + foreach (var cycle in job.Body.Cycles) { + var simulationRunData = new VectoRunData() { + BasePath = job.BasePath, + JobFileName = job.JobFile, + EngineData = CreateEngineData((dynamic) Engine), + Cycle = DrivingCycleData.ReadFromFileEngineOnly(Path.Combine(job.BasePath, cycle)), + IsEngineOnly = true + }; + yield return simulationRunData; + } + } + + protected override void ProcessJob(VectoJobFile vectoJob) + { + var declaration = vectoJob as VectoJobFileV2Engineering; + if (declaration == null) { + throw new VectoException("Unhandled Job File Format"); + } + var job = declaration; + + ReadEngine(Path.Combine(job.BasePath, job.Body.EngineFile)); + } + } +} \ No newline at end of file diff --git a/VectoCore/FileIO/Reader/Impl/EngineeringModeSimulationDataReader.cs b/VectoCore/FileIO/Reader/Impl/EngineeringModeSimulationDataReader.cs index 9543df9de5..09705f0934 100644 --- a/VectoCore/FileIO/Reader/Impl/EngineeringModeSimulationDataReader.cs +++ b/VectoCore/FileIO/Reader/Impl/EngineeringModeSimulationDataReader.cs @@ -61,12 +61,6 @@ namespace TUGraz.VectoCore.FileIO.Reader.Impl } - internal VectoRunData CreateVectoJobData(VectoJobFileV2Engineering data, string basePath) - { - return new VectoRunData(); - } - - internal VehicleData CreateVehicleData(VehicleFileV5Engineering vehicle) { var data = vehicle.Body; @@ -91,7 +85,21 @@ namespace TUGraz.VectoCore.FileIO.Reader.Impl public override IEnumerable<VectoRunData> NextRun() { - throw new NotImplementedException(); + var job = Job as VectoJobFileV2Engineering; + if (job == null) { + Log.Warn("Job-file is null or unsupported version"); + yield break; + } + foreach (var cycle in job.Body.Cycles) { + var simulationRunData = new VectoRunData() { + BasePath = job.BasePath, + JobFileName = job.JobFile, + EngineData = CreateEngineData((dynamic) Engine), + Cycle = DrivingCycleData.ReadFromFile(Path.Combine(job.BasePath, cycle), DrivingCycleData.CycleType.DistanceBased), + IsEngineOnly = false + }; + yield return simulationRunData; + } } @@ -124,6 +132,7 @@ namespace TUGraz.VectoCore.FileIO.Reader.Impl case 2: Job = JsonConvert.DeserializeObject<VectoJobFileV2Engineering>(json); Job.BasePath = Path.GetDirectoryName(file) + Path.DirectorySeparatorChar; + Job.JobFile = Path.GetFileName(file); break; default: throw new UnsupportedFileVersionException("Unsupported version of job-file. Got version " + fileInfo.Version); diff --git a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs index 8f71d134ed..6dc257552d 100644 --- a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs +++ b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Collections.Generic; +using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.FileIO.Reader; using TUGraz.VectoCore.FileIO.Reader.Impl; using TUGraz.VectoCore.Models.Simulation.Data; @@ -32,7 +33,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl DataReader = new EngineeringModeSimulationDataReader(); break; case FactoryMode.EngineOnlyMode: - throw new NotImplementedException(); + DataReader = new EngineOnlySimulationDataReader(); + break; } } @@ -67,7 +69,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl IModalDataWriter modWriter = null; if (_mode != FactoryMode.DeclarationMode) { - var modFileName = ""; + var modFileName = Path.Combine(data.BasePath, data.JobFileName.Replace(Constants.FileExtensions.VectoJobFile, "") + + Constants.FileExtensions.ModDataFile); modWriter = new ModalDataWriter(modFileName, _mode == FactoryMode.EngineOnlyMode); } var jobName = string.Format("{0}-{1}", JobNumber, i++); diff --git a/VectoCore/VectoCore.csproj b/VectoCore/VectoCore.csproj index 6603cabb03..10899719f0 100644 --- a/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore.csproj @@ -106,6 +106,7 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> + <Compile Include="Configuration\Constants.cs" /> <Compile Include="Exceptions\VectoExceptions.cs" /> <Compile Include="Exceptions\VectoSimulationException.cs" /> <Compile Include="FileIO\DeclarationFile\EngineFileDecl.cs" /> @@ -121,6 +122,7 @@ <Compile Include="FileIO\Reader\Impl\AbstractSimulationDataReader.cs" /> <Compile Include="FileIO\Reader\Impl\DeclarationModeSimulationDataReader.cs" /> <Compile Include="FileIO\Reader\Impl\EngineeringModeSimulationDataReader.cs" /> + <Compile Include="FileIO\Reader\Impl\EngineOnlySimulationDataReader.cs" /> <Compile Include="FileIO\Reader\ISimulationDataReader.cs" /> <Compile Include="FileIO\VectoFiles.cs" /> <Compile Include="Models\Connector\Ports\IDriverDemandPort.cs" /> @@ -195,13 +197,11 @@ <Compile Include="Models\SimulationComponent\Impl\DistanceBasedDrivingCycle.cs" /> <Compile Include="Models\SimulationComponent\Impl\DirectAuxiliary.cs" /> <Compile Include="Models\SimulationComponent\Impl\TimeBasedDrivingCycle.cs" /> - <Compile Include="Utils\IMemento.cs" /> <Compile Include="Models\SimulationComponent\Impl\CombustionEngine.cs" /> <Compile Include="Models\SimulationComponent\Impl\EngineOnlyGearbox.cs" /> <Compile Include="Models\SimulationComponent\Impl\Gearbox.cs" /> <Compile Include="Models\SimulationComponent\Impl\Wheels.cs" /> <Compile Include="Models\SimulationComponent\IWheels.cs" /> - <Compile Include="Utils\Memento.cs" /> <Compile Include="Models\SimulationComponent\VectoSimulationComponent.cs" /> <Compile Include="Models\SimulationComponent\Impl\EngineOnlyDrivingCycle.cs" /> <Compile Include="Models\Simulation\Data\IModalDataWriter.cs" /> diff --git a/VectoCoreTest/Models/Simulation/SimulationTests.cs b/VectoCoreTest/Models/Simulation/SimulationTests.cs index 7d7f8b4644..c9df489288 100644 --- a/VectoCoreTest/Models/Simulation/SimulationTests.cs +++ b/VectoCoreTest/Models/Simulation/SimulationTests.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Security.Cryptography.X509Certificates; using Microsoft.VisualStudio.TestTools.UnitTesting; +using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.Exceptions; using TUGraz.VectoCore.FileIO.Reader.Impl; using TUGraz.VectoCore.Models.Simulation; @@ -61,12 +62,12 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation public IVectoRun CreateRun(string resultFileName) { - var sumFileName = resultFileName.Substring(0, resultFileName.Length - 4) + "vsum"; + var sumFileName = resultFileName.Substring(0, resultFileName.Length - 5) + Constants.FileExtensions.SumFile; - var dataWriter = new ModalDataWriter(resultFileName, engineOnly: true); + //var dataWriter = new ModalDataWriter(resultFileName, engineOnly: true); var sumWriter = new SummaryFileWriter(sumFileName); var factory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineOnlyMode) { - SumWriter = sumWriter, + SumWriter = sumWriter, }; factory.DataReader.SetJobFile(EngineOnlyJob); diff --git a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs index 7a2f051833..d94e883ceb 100644 --- a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs +++ b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs @@ -194,33 +194,6 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent modalData.Finish(); } - [TestMethod] - public void TestEngineMemento() - { - var vehicle = new VehicleContainer(); - var engineData = EngineeringModeSimulationDataReader.CreateEngineDataFromFile(CoachEngine); - var origin = new CombustionEngine(vehicle, engineData); - - var data = Memento.Serialize(origin); - - var restored = new CombustionEngine(vehicle, engineData); - Memento.Deserialize(restored, data); - - Assert.AreEqual(origin, restored, "Serialized with Memento, Deserialized with Memento"); - - data = origin.Serialize(); - restored = new CombustionEngine(vehicle, engineData); - Memento.Deserialize(restored, data); - - Assert.AreEqual(origin, restored, "Serialized with Object, Deserialized with Memento"); - - - data = origin.Serialize(); - restored = new CombustionEngine(vehicle, engineData); - restored.Deserialize(data); - - Assert.AreEqual(origin, restored, "Serialized with Object, Deserialized with Object"); - } [TestMethod, Ignore] public void TestWriteToFile() -- GitLab