From 25040a5cc9ed8efce76a41d62e0782adfc754a96 Mon Sep 17 00:00:00 2001
From: Michael Krisper <michael.krisper@tugraz.at>
Date: Mon, 9 Nov 2015 13:32:27 +0100
Subject: [PATCH] sumwriter refactoring: used write-delegate instead of
 ISummaryWriter interface

---
 .../Simulation/Data/ISummaryDataWriter.cs     | 23 -------
 .../Simulation/Data/SummaryFileWriter.cs      | 66 ++++---------------
 .../Simulation/Impl/PowertrainBuilder.cs      |  4 +-
 .../Simulation/Impl/SimulatorFactory.cs       | 27 ++------
 .../Simulation/Impl/VehicleContainer.cs       | 12 ++--
 VectoCore/VectoCore.csproj                    |  2 +-
 VectoCoreTest/Integration/CoachPowerTrain.cs  |  3 +-
 .../SimulationRuns/FullPowertrain.cs          |  9 +--
 .../SimulationRuns/MinimalPowertrain.cs       |  9 +--
 .../Integration/Truck40tPowerTrain.cs         |  3 +-
 VectoCoreTest/Models/Simulation/AuxTests.cs   | 21 ++----
 .../Models/Simulation/DrivingCycleTests.cs    |  5 +-
 .../Simulation/PowerTrainBuilderTest.cs       |  3 +-
 .../Models/Simulation/SimulationTests.cs      | 21 ++++--
 .../Models/SimulationComponent/DriverTest.cs  | 12 ++--
 VectoCoreTest/Utils/TestSumWriter.cs          | 12 ----
 VectoCoreTest/VectoCoreTest.csproj            |  1 -
 17 files changed, 65 insertions(+), 168 deletions(-)
 delete mode 100644 VectoCore/Models/Simulation/Data/ISummaryDataWriter.cs
 delete mode 100644 VectoCoreTest/Utils/TestSumWriter.cs

diff --git a/VectoCore/Models/Simulation/Data/ISummaryDataWriter.cs b/VectoCore/Models/Simulation/Data/ISummaryDataWriter.cs
deleted file mode 100644
index 3da42f8122..0000000000
--- a/VectoCore/Models/Simulation/Data/ISummaryDataWriter.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using TUGraz.VectoCore.Utils;
-
-namespace TUGraz.VectoCore.Models.Simulation.Data
-{
-	/// <summary>
-	/// Provides methods to write and finish the Summary.
-	/// </summary>
-	public interface ISummaryDataWriter
-	{
-		/// <summary>
-		/// Writes a single sum entry for the given modaldata of the job.
-		/// </summary>
-		/// <param name="data">The modal data.</param>
-		/// <param name="vehicleMass">The vehicle mass.</param>
-		/// <param name="vehicleLoading">The vehicle loading.</param>
-		void Write(IModalDataWriter data, Kilogram vehicleMass = null, Kilogram vehicleLoading = null);
-
-		/// <summary>
-		/// Writes the data to the sum file.
-		/// </summary>
-		void Finish();
-	}
-}
\ No newline at end of file
diff --git a/VectoCore/Models/Simulation/Data/SummaryFileWriter.cs b/VectoCore/Models/Simulation/Data/SummaryFileWriter.cs
index 5e18492b23..d6d221a3d8 100644
--- a/VectoCore/Models/Simulation/Data/SummaryFileWriter.cs
+++ b/VectoCore/Models/Simulation/Data/SummaryFileWriter.cs
@@ -2,11 +2,13 @@
 using System.Data;
 using System.Linq;
 using System.Runtime.CompilerServices;
-using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Models.Simulation.Data
 {
+	public delegate void WriteSumData(IModalDataWriter data, Kilogram vehicleMass, Kilogram loading);
+
+
 	/// <summary>
 	/// Class for the sum file in vecto.
 	/// </summary>
@@ -88,6 +90,17 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 			}.Select(x => new DataColumn(x, typeof(SI))).ToArray());
 		}
 
+		public virtual void Write(bool isEngineOnly, IModalDataWriter data, string jobFileName, string jobName, string cycleFileName,
+			Kilogram vehicleMass, Kilogram vehicleLoading)
+		{
+			if (isEngineOnly) {
+				WriteEngineOnly(data, jobFileName, jobName, cycleFileName);
+			} else {
+				WriteFullPowertrain(data, jobFileName, jobName, cycleFileName, vehicleMass, vehicleLoading);
+			}
+		}
+
+
 		protected internal void WriteEngineOnly(IModalDataWriter data, string jobFileName, string jobName,
 			string cycleFileName)
 		{
@@ -206,55 +219,4 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
 			VectoCSVFile.Write(_sumFileName, new DataView(_table).ToTable(false, dataColumns.ToArray()));
 		}
 	}
-}
-
-/// <summary>
-/// Decorator for FullPowertrain which adds some data for later use in the SummaryFileWriter.
-/// </summary>
-public class SumWriterDecoratorFullPowertrain : SummaryFileWriter, ISummaryDataWriter
-{
-	private readonly SummaryFileWriter _writer;
-	private readonly string _jobFileName;
-	private readonly string _jobName;
-	private readonly string _cycleFileName;
-
-	public SumWriterDecoratorFullPowertrain(SummaryFileWriter writer, string jobFileName, string jobName,
-		string cycleFileName)
-	{
-		_writer = writer;
-		_jobFileName = jobFileName;
-		_jobName = jobName;
-		_cycleFileName = cycleFileName;
-	}
-
-	public void Write(IModalDataWriter data, Kilogram vehicleMass = null, Kilogram vehicleLoading = null)
-	{
-		Log.Info("Writing Summary File");
-		_writer.WriteFullPowertrain(data, _jobFileName, _jobName, _cycleFileName, vehicleMass, vehicleLoading);
-	}
-}
-
-
-/// <summary>
-/// Decorator for EngineOnly Mode which adds some data for later use in the SummaryFileWriter.
-/// </summary>
-public class SumWriterDecoratorEngineOnly : SummaryFileWriter, ISummaryDataWriter
-{
-	private readonly SummaryFileWriter _writer;
-	private readonly string _jobFileName;
-	private readonly string _jobName;
-	private readonly string _cycleFileName;
-
-	public SumWriterDecoratorEngineOnly(SummaryFileWriter writer, string jobFileName, string jobName, string cycleFileName)
-	{
-		_writer = writer;
-		_jobFileName = jobFileName;
-		_jobName = jobName;
-		_cycleFileName = cycleFileName;
-	}
-
-	public void Write(IModalDataWriter data, Kilogram vehicleMass = null, Kilogram vehicleLoading = null)
-	{
-		_writer.WriteEngineOnly(data, _jobFileName, _jobName, _cycleFileName);
-	}
 }
\ No newline at end of file
diff --git a/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index 3ce4cc26db..2075d3242a 100644
--- a/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -1,5 +1,3 @@
-using System;
-using System.Collections;
 using TUGraz.VectoCore.Exceptions;
 using TUGraz.VectoCore.Models.Connector.Ports;
 using TUGraz.VectoCore.Models.Simulation.Data;
@@ -19,7 +17,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 		private readonly IModalDataWriter _dataWriter;
 
 
-		public PowertrainBuilder(IModalDataWriter dataWriter, ISummaryDataWriter sumWriter, bool engineOnly)
+		public PowertrainBuilder(IModalDataWriter dataWriter, bool engineOnly, WriteSumData sumWriter = null)
 		{
 			_engineOnly = engineOnly;
 			_dataWriter = dataWriter;
diff --git a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
index 427e53951b..8006c017cc 100644
--- a/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
+++ b/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs
@@ -1,7 +1,6 @@
 using System.Collections.Generic;
 using System.IO;
 using System.Reflection;
-using NLog;
 using TUGraz.VectoCore.Configuration;
 using TUGraz.VectoCore.Exceptions;
 using TUGraz.VectoCore.FileIO.Reader;
@@ -66,9 +65,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 					new ModalDataWriter(string.Format(modFileName, data.Cycle.Name, data.ModFileSuffix ?? ""),
 						writer => d.Report.AddResult(d.Loading, d.Mission, writer), _mode);
 				modWriter.WriteModalResults = WriteModalResults;
-				var jobName = string.Format("{0}-{1}", JobNumber, i++);
-				var sumWriterDecorator = DecorateSumWriter(data.IsEngineOnly, SumWriter, data.JobFileName, jobName, data.Cycle.Name);
-				var builder = new PowertrainBuilder(modWriter, sumWriterDecorator, DataReader.IsEngineOnly);
+				var builder = new PowertrainBuilder(modWriter,
+					DataReader.IsEngineOnly, (writer, mass, loading) =>
+						SumWriter.Write(d.IsEngineOnly, modWriter, d.JobFileName, string.Format("{0}-{1}", JobNumber, i++), d.Cycle.Name,
+							mass, loading));
 
 				VectoRun run;
 				if (data.IsEngineOnly) {
@@ -82,24 +82,5 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 				yield return run;
 			}
 		}
-
-		/// <summary>
-		/// Decorates the sum writer with a correct decorator (either EngineOnly or FullPowertrain).
-		/// </summary>
-		/// <param name="engineOnly">if set to <c>true</c> [engine only].</param>
-		/// <param name="sumWriter">The sum writer.</param>
-		/// <param name="jobFileName">Name of the job file.</param>
-		/// <param name="jobName">Name of the job.</param>
-		/// <param name="cycleName">The cycle file.</param>
-		/// <returns></returns>
-		private static ISummaryDataWriter DecorateSumWriter(bool engineOnly, SummaryFileWriter sumWriter,
-			string jobFileName, string jobName, string cycleName)
-		{
-			if (engineOnly) {
-				return new SumWriterDecoratorEngineOnly(sumWriter, jobFileName, jobName, cycleName);
-			}
-
-			return new SumWriterDecoratorFullPowertrain(sumWriter, jobFileName, jobName, cycleName);
-		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/Models/Simulation/Impl/VehicleContainer.cs b/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
index 9d6e240087..9a5751d8fd 100644
--- a/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
+++ b/VectoCore/Models/Simulation/Impl/VehicleContainer.cs
@@ -1,9 +1,9 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Diagnostics;
 using TUGraz.VectoCore.Exceptions;
 using TUGraz.VectoCore.Models.Connector.Ports;
-using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.Simulation.DataBus;
 using TUGraz.VectoCore.Models.SimulationComponent;
@@ -29,8 +29,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 
 		internal ISimulationOutPort Cycle;
 
-		internal ISummaryDataWriter SumWriter;
 		internal IModalDataWriter DataWriter;
+		internal WriteSumData WriteSumData;
 
 		#region IGearCockpit
 
@@ -130,10 +130,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 
 		#endregion
 
-		public VehicleContainer(IModalDataWriter dataWriter = null, ISummaryDataWriter sumWriter = null)
+		public VehicleContainer(IModalDataWriter dataWriter = null, WriteSumData writeSumData = null)
 		{
 			DataWriter = dataWriter;
-			SumWriter = sumWriter;
+			WriteSumData = writeSumData ?? delegate {};
 		}
 
 		#region IVehicleContainer
@@ -213,7 +213,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			Log.Info("VehicleContainer finishing simulation.");
 			DataWriter.Finish(RunStatus);
 
-			SumWriter.Write(DataWriter, VehicleMass, VehicleLoading);
+			WriteSumData(DataWriter, VehicleMass, VehicleLoading);
 		}
 
 		public VectoRun.Status RunStatus { get; set; }
diff --git a/VectoCore/VectoCore.csproj b/VectoCore/VectoCore.csproj
index 0d592ade9f..afa07c2c56 100644
--- a/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore.csproj
@@ -179,6 +179,7 @@
     <Compile Include="Models\SimulationComponent\Data\FullLoadCurve.cs" />
     <Compile Include="Models\Simulation\DataBus\IMileageCounter.cs" />
     <Compile Include="Models\Simulation\DataBus\IRoadLookAhead.cs" />
+    <Compile Include="Models\Simulation\Data\VectoJobData.cs" />
     <Compile Include="Models\Simulation\Impl\DistanceRun.cs" />
     <Compile Include="Models\Simulation\Impl\PowertrainBuilder.cs" />
     <Compile Include="Models\Simulation\Impl\TimeRun.cs" />
@@ -217,7 +218,6 @@
     <Compile Include="Models\SimulationComponent\Impl\AxleGear.cs" />
     <Compile Include="Models\SimulationComponent\Impl\Retarder.cs" />
     <Compile Include="Models\SimulationComponent\IPowerTrainComponent.cs" />
-    <Compile Include="Models\Simulation\Data\ISummaryDataWriter.cs" />
     <Compile Include="Models\Simulation\Data\SummaryFileWriter.cs" />
     <Compile Include="Models\Simulation\Data\VectoRunData.cs" />
     <Compile Include="Models\SimulationComponent\Impl\Driver.cs" />
diff --git a/VectoCoreTest/Integration/CoachPowerTrain.cs b/VectoCoreTest/Integration/CoachPowerTrain.cs
index f84820d810..ede8a73579 100644
--- a/VectoCoreTest/Integration/CoachPowerTrain.cs
+++ b/VectoCoreTest/Integration/CoachPowerTrain.cs
@@ -39,8 +39,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 		public static VehicleContainer CreatePowerTrain(DrivingCycleData cycleData, string modFileName, bool overspeed = false)
 		{
 			var modalWriter = new ModalDataWriter(modFileName);
-			var sumWriter = new TestSumWriter();
-			var container = new VehicleContainer(modalWriter, sumWriter);
+			var container = new VehicleContainer(modalWriter);
 
 			var engineData = EngineeringModeSimulationDataReader.CreateEngineDataFromFile(EngineFile);
 			var axleGearData = CreateAxleGearData();
diff --git a/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs b/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
index 59fbf39518..7951a8be95 100644
--- a/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
+++ b/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs
@@ -39,8 +39,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 		public void Test_FullPowertrain_SimpleGearbox()
 		{
 			var modalWriter = new ModalDataWriter("Coach_FullPowertrain_SimpleGearbox.vmod");
-			var sumWriter = new TestSumWriter();
-			var container = new VehicleContainer(modalWriter, sumWriter);
+			var container = new VehicleContainer(modalWriter);
 
 			var engineData = EngineeringModeSimulationDataReader.CreateEngineDataFromFile(EngineFile);
 			var cycleData = DrivingCycleDataReader.ReadFromFileDistanceBased(CycleFile);
@@ -98,8 +97,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 		public void Test_FullPowertrain()
 		{
 			var modalWriter = new ModalDataWriter("Coach_FullPowertrain.vmod");
-			var sumWriter = new TestSumWriter();
-			var container = new VehicleContainer(modalWriter, sumWriter);
+			var container = new VehicleContainer(modalWriter);
 
 			var engineData = EngineeringModeSimulationDataReader.CreateEngineDataFromFile(EngineFile);
 			var cycleData = DrivingCycleDataReader.ReadFromFileDistanceBased(CoachCycleFile);
@@ -174,8 +172,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 		public void Test_FullPowertrain_LowSpeed()
 		{
 			var modalWriter = new ModalDataWriter("Coach_FullPowertrain_LowSpeed.vmod");
-			var sumWriter = new TestSumWriter();
-			var container = new VehicleContainer(modalWriter, sumWriter);
+			var container = new VehicleContainer(modalWriter);
 
 			var engineData = EngineeringModeSimulationDataReader.CreateEngineDataFromFile(EngineFile);
 			var cycleData = DrivingCycleDataReader.ReadFromFileDistanceBased(CycleFile);
diff --git a/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs b/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
index 71ce21f524..cf5550e305 100644
--- a/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
+++ b/VectoCoreTest/Integration/SimulationRuns/MinimalPowertrain.cs
@@ -45,8 +45,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 			var driverData = CreateDriverData(AccelerationFile);
 
 			var modalWriter = new ModalDataWriter("Coach_MinimalPowertrainOverload.vmod"); //new TestModalDataWriter();
-			var sumWriter = new TestSumWriter();
-			var vehicleContainer = new VehicleContainer(modalWriter, sumWriter);
+			var vehicleContainer = new VehicleContainer(modalWriter);
 
 			var driver = new Driver(vehicleContainer, driverData, new DefaultDriverStrategy());
 			dynamic tmp = Port.AddComponent(driver, new Vehicle(vehicleContainer, vehicleData));
@@ -96,8 +95,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 			var driverData = CreateDriverData(AccelerationFile);
 
 			var modalWriter = new ModalDataWriter("Coach_MinimalPowertrain.vmod"); //new TestModalDataWriter();
-			var sumWriter = new TestSumWriter();
-			var vehicleContainer = new VehicleContainer(modalWriter, sumWriter);
+			var vehicleContainer = new VehicleContainer(modalWriter);
 
 			var cycle = new DistanceBasedDrivingCycle(vehicleContainer, cycleData);
 
@@ -168,8 +166,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns
 
 			var modalWriter = new ModalDataWriter("Coach_MinimalPowertrainOverload.vmod",
 				SimulatorFactory.FactoryMode.EngineeringMode);
-			var sumWriter = new TestSumWriter();
-			var vehicleContainer = new VehicleContainer(modalWriter, sumWriter);
+			var vehicleContainer = new VehicleContainer(modalWriter);
 
 			var cycle = new DistanceBasedDrivingCycle(vehicleContainer, cycleData);
 
diff --git a/VectoCoreTest/Integration/Truck40tPowerTrain.cs b/VectoCoreTest/Integration/Truck40tPowerTrain.cs
index a88144a119..42f18a6746 100644
--- a/VectoCoreTest/Integration/Truck40tPowerTrain.cs
+++ b/VectoCoreTest/Integration/Truck40tPowerTrain.cs
@@ -46,8 +46,7 @@ namespace TUGraz.VectoCore.Tests.Integration
 			Kilogram loading, bool overspeed = false)
 		{
 			var modalWriter = new ModalDataWriter(modFileName);
-			var sumWriter = new TestSumWriter();
-			var container = new VehicleContainer(modalWriter, sumWriter);
+			var container = new VehicleContainer(modalWriter);
 
 			var engineData = EngineeringModeSimulationDataReader.CreateEngineDataFromFile(EngineFile);
 			var axleGearData = CreateAxleGearData();
diff --git a/VectoCoreTest/Models/Simulation/AuxTests.cs b/VectoCoreTest/Models/Simulation/AuxTests.cs
index 0e022023bf..f438501cf8 100644
--- a/VectoCoreTest/Models/Simulation/AuxTests.cs
+++ b/VectoCoreTest/Models/Simulation/AuxTests.cs
@@ -1,5 +1,4 @@
-using System.Linq;
-using TUGraz.VectoCore.Utils;
+using TUGraz.VectoCore.Utils;
 using TUGraz.VectoCore.Exceptions;
 using TUGraz.VectoCore.Tests.Utils;
 using TUGraz.VectoCore.FileIO.Reader;
@@ -7,7 +6,6 @@ using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.Simulation.Data;
 using TUGraz.VectoCore.Models.Simulation.Impl;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TUGraz.VectoCore.FileIO;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 using TUGraz.VectoCore.Models.SimulationComponent.Impl;
 
@@ -27,9 +25,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 			dataWriter.AddAuxiliary("AC");
 
 			var sumWriter = new SummaryFileWriter(@"AuxWriteModFileSumFile.vsum");
-			var deco = new SumWriterDecoratorFullPowertrain(sumWriter, "", "", "");
-
-			var container = new VehicleContainer(dataWriter, deco);
+			var container = new VehicleContainer(dataWriter,
+				(writer, mass, loading) => sumWriter.WriteFullPowertrain(dataWriter, "", "", "", null, null));
 			var data = DrivingCycleDataReader.ReadFromFileDistanceBased(@"TestData\Cycles\LongHaul_short.vdri");
 			var mockcycle = new MockDrivingCycle(container, data);
 			var port = new MockTnOutPort();
@@ -76,8 +73,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 		public void AuxConstant()
 		{
 			var dataWriter = new MockModalDataWriter();
-			var sumWriter = new TestSumWriter();
-			var container = new VehicleContainer(dataWriter, sumWriter);
+			var container = new VehicleContainer(dataWriter);
 			var port = new MockTnOutPort();
 			var aux = new Auxiliary(container);
 			aux.InPort().Connect(port);
@@ -112,8 +108,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 		public void AuxDirect()
 		{
 			var dataWriter = new MockModalDataWriter();
-			var sumWriter = new TestSumWriter();
-			var container = new VehicleContainer(dataWriter, sumWriter);
+			var container = new VehicleContainer(dataWriter);
 			var data = DrivingCycleDataReader.ReadFromFileTimeBased(@"TestData\Cycles\Coach time based short.vdri");
 			var cycle = new MockDrivingCycle(container, data);
 			var port = new MockTnOutPort();
@@ -145,8 +140,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 			dataWriter.AddAuxiliary("ALT1");
 			dataWriter.AddAuxiliary("CONSTANT");
 
-			var sumWriter = new TestSumWriter();
-			var container = new VehicleContainer(dataWriter, sumWriter);
+			var container = new VehicleContainer(dataWriter);
 			var data = DrivingCycleDataReader.ReadFromFileTimeBased(@"TestData\Cycles\Coach time based short.vdri");
 			// cycle ALT1 is set to values to equal the first few fixed points in the auxiliary file.
 			// ALT1.aux file: nAuxiliary speed 2358: 0, 0.38, 0.49, 0.64, ...
@@ -202,8 +196,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 			var dataWriter = new MockModalDataWriter();
 			dataWriter.AddAuxiliary(auxId);
 
-			var sumWriter = new TestSumWriter();
-			var container = new VehicleContainer(dataWriter, sumWriter);
+			var container = new VehicleContainer(dataWriter);
 			var data = DrivingCycleDataReader.ReadFromFileTimeBased(@"TestData\Cycles\Coach time based short.vdri");
 			// cycle ALT1 is set to values to equal the first few fixed points in the auxiliary file.
 			// ALT1.aux file: nAuxiliary speed 2358: 0, 0.38, 0.49, 0.64, ...
diff --git a/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs b/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs
index 2409282395..cce5995c6b 100644
--- a/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs
+++ b/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs
@@ -17,8 +17,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 		public void TestEngineOnly()
 		{
 			var dataWriter = new MockModalDataWriter();
-			var sumWriter = new TestSumWriter();
-			var container = new VehicleContainer(dataWriter, sumWriter);
+			var container = new VehicleContainer(dataWriter);
 
 			var cycleData = DrivingCycleDataReader.ReadFromFileEngineOnly(@"TestData\Cycles\Coach Engine Only.vdri");
 			var cycle = new EngineOnlyDrivingCycle(container, cycleData);
@@ -133,7 +132,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 		[TestMethod]
 		public void Test_TimeBased_TimeFieldMissing()
 		{
-			var container = new VehicleContainer(new MockModalDataWriter(), new TestSumWriter());
+			var container = new VehicleContainer(new MockModalDataWriter());
 
 			var cycleData = DrivingCycleDataReader.ReadFromFileTimeBased(@"TestData\Cycles\Cycle time field missing.vdri");
 			var cycle = new TimeBasedDrivingCycle(container, cycleData);
diff --git a/VectoCoreTest/Models/Simulation/PowerTrainBuilderTest.cs b/VectoCoreTest/Models/Simulation/PowerTrainBuilderTest.cs
index b6800417bc..00fd71389b 100644
--- a/VectoCoreTest/Models/Simulation/PowerTrainBuilderTest.cs
+++ b/VectoCoreTest/Models/Simulation/PowerTrainBuilderTest.cs
@@ -22,8 +22,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 			var runData = reader.NextRun().First();
 
 			var writer = new MockModalDataWriter();
-			var sumWriter = new TestSumWriter();
-			var builder = new PowertrainBuilder(writer, sumWriter, false);
+			var builder = new PowertrainBuilder(writer, false);
 
 			var powerTrain = builder.Build(runData);
 
diff --git a/VectoCoreTest/Models/Simulation/SimulationTests.cs b/VectoCoreTest/Models/Simulation/SimulationTests.cs
index 32651371da..727b69f265 100644
--- a/VectoCoreTest/Models/Simulation/SimulationTests.cs
+++ b/VectoCoreTest/Models/Simulation/SimulationTests.cs
@@ -41,6 +41,16 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 			ResultFileHelper.TestModFile(expected, actual);
 		}
 
+		private class MockSumWriter : SummaryFileWriter
+		{
+			public override void Write(bool isEngineOnly, IModalDataWriter data, string jobFileName, string jobName,
+				string cycleFileName,
+				Kilogram vehicleMass, Kilogram vehicleLoading) {}
+
+			public override void Finish() {}
+		}
+
+
 		[TestMethod]
 		public void TestEngineOnly_SimulatorRun()
 		{
@@ -49,7 +59,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 
 			var run = CreateRun(actual);
 
-			var sim = new JobContainer(new TestSumWriter());
+			var sim = new JobContainer(new MockSumWriter());
 			sim.AddRun(run);
 			sim.Execute();
 
@@ -63,8 +73,10 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 			var dataWriter = new ModalDataWriter(resultFileName, SimulatorFactory.FactoryMode.EngineOnlyMode);
 			var sumWriter = new SummaryFileWriter(sumFileName);
 
-			var factory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineOnlyMode, EngineOnlyJob) { SumWriter = sumWriter };
-			
+			var factory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineOnlyMode, EngineOnlyJob) {
+				SumWriter = sumWriter
+			};
+
 			return factory.SimulationRuns().First();
 		}
 
@@ -74,7 +86,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
 			var sumWriter = new SummaryFileWriter(@"24t Coach.vsum");
 			var jobContainer = new JobContainer(sumWriter);
 
-			var runsFactory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineOnlyMode, @"TestData\Jobs\24t Coach EngineOnly.vecto");
+			var runsFactory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineOnlyMode,
+				@"TestData\Jobs\24t Coach EngineOnly.vecto");
 
 			jobContainer.AddRuns(runsFactory);
 			jobContainer.Execute();
diff --git a/VectoCoreTest/Models/SimulationComponent/DriverTest.cs b/VectoCoreTest/Models/SimulationComponent/DriverTest.cs
index 003a61f76d..df4a0d5b45 100644
--- a/VectoCoreTest/Models/SimulationComponent/DriverTest.cs
+++ b/VectoCoreTest/Models/SimulationComponent/DriverTest.cs
@@ -42,8 +42,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 
 			var modalWriter = new ModalDataWriter("Coach_MinimalPowertrain_Coasting.vmod",
 				SimulatorFactory.FactoryMode.EngineeringMode); //new TestModalDataWriter();
-			var sumWriter = new TestSumWriter();
-			var vehicleContainer = new VehicleContainer(modalWriter, sumWriter);
+			var vehicleContainer = new VehicleContainer(modalWriter);
 
 			var driver = new Driver(vehicleContainer, driverData, new DefaultDriverStrategy());
 			var engine = new CombustionEngine(vehicleContainer, engineData);
@@ -96,10 +95,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 
 			var driverData = CreateDriverData();
 
-			var modalWriter = new ModalDataWriter("Coach_MinimalPowertrain_Coasting.vmod",
-				SimulatorFactory.FactoryMode.EngineeringMode); //new TestModalDataWriter();
-			var sumWriter = new TestSumWriter();
-			var vehicleContainer = new VehicleContainer(modalWriter, sumWriter);
+			var modalWriter = new ModalDataWriter("Coach_MinimalPowertrain_Coasting.vmod");
+			var vehicleContainer = new VehicleContainer(modalWriter);
 
 			var driver = new Driver(vehicleContainer, driverData, new DefaultDriverStrategy());
 			var engine = new CombustionEngine(vehicleContainer, engineData);
@@ -157,8 +154,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var driverData = CreateDriverData();
 
 			var modalWriter = new ModalDataWriter("Coach_MinimalPowertrain.vmod", SimulatorFactory.FactoryMode.EngineeringMode);
-			var sumWriter = new TestSumWriter();
-			var vehicleContainer = new VehicleContainer(modalWriter, sumWriter);
+			var vehicleContainer = new VehicleContainer(modalWriter);
 
 			var cycle = new MockDrivingCycle(vehicleContainer, null);
 
diff --git a/VectoCoreTest/Utils/TestSumWriter.cs b/VectoCoreTest/Utils/TestSumWriter.cs
deleted file mode 100644
index 95c41f931d..0000000000
--- a/VectoCoreTest/Utils/TestSumWriter.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using TUGraz.VectoCore.Models.Simulation.Data;
-using TUGraz.VectoCore.Utils;
-
-namespace TUGraz.VectoCore.Tests.Utils
-{
-	public class TestSumWriter : SummaryFileWriter, ISummaryDataWriter
-	{
-		public void Write(IModalDataWriter data, Kilogram vehicleMass = null, Kilogram vehicleLoading = null) {}
-
-		public override void Finish() {}
-	}
-}
\ No newline at end of file
diff --git a/VectoCoreTest/VectoCoreTest.csproj b/VectoCoreTest/VectoCoreTest.csproj
index 973e2c1ddd..ace6d23cf2 100644
--- a/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCoreTest/VectoCoreTest.csproj
@@ -107,7 +107,6 @@
     <Compile Include="Utils\ResultFileHelper.cs" />
     <Compile Include="Utils\MockPorts.cs" />
     <Compile Include="Models\Simulation\SimulationTests.cs" />
-    <Compile Include="Utils\TestSumWriter.cs" />
     <Compile Include="Models\Simulation\VechicleContainerTests.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Properties\Settings.Designer.cs">
-- 
GitLab