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