From 86683a12f917e2be812b019c37cf5dbcedeaff99 Mon Sep 17 00:00:00 2001
From: Michael Krisper <michael.krisper@tugraz.at>
Date: Wed, 18 May 2016 13:16:47 +0200
Subject: [PATCH] rewrite tests from csv-data input to NUnit TestCases

---
 .../EngineOnlyCycle/EngineOnlyCycleTest.cs    |  36 +++---
 .../CombustionEngineTest.cs                   | 118 +++++++++---------
 .../GearboxDataTest.cs                        |  97 +++++++-------
 .../TestData/AxleGearLossInterpolation.csv    |  10 --
 .../TestData/EngineFullLoadJumps.csv          |   5 -
 .../VectoCoreTest/TestData/EngineTests.csv    |   4 -
 VectoCore/VectoCoreTest/VectoCoreTest.csproj  |  11 --
 7 files changed, 126 insertions(+), 155 deletions(-)
 delete mode 100644 VectoCore/VectoCoreTest/TestData/AxleGearLossInterpolation.csv
 delete mode 100644 VectoCore/VectoCoreTest/TestData/EngineFullLoadJumps.csv
 delete mode 100644 VectoCore/VectoCoreTest/TestData/EngineTests.csv

diff --git a/VectoCore/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs b/VectoCore/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs
index c97d59c2ab..8222145df9 100644
--- a/VectoCore/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs
+++ b/VectoCore/VectoCoreTest/Integration/EngineOnlyCycle/EngineOnlyCycleTest.cs
@@ -31,7 +31,7 @@
 
 using System.IO;
 using System.Linq;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+using NUnit.Framework;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
@@ -47,24 +47,31 @@ using TUGraz.VectoCore.Tests.Utils;
 
 namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle
 {
-	[TestClass]
+	[TestFixture]
 	public class EngineOnlyCycleTest
 	{
 		private const string EngineFile = @"TestData\Components\24t Coach.veng";
-		public TestContext TestContext { get; set; }
 
-		[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\TestData\\EngineTests.csv",
-			"EngineTests#csv", DataAccessMethod.Sequential)]
-		[TestMethod]
-		public void TestEngineOnlyDrivingCycle()
+		[TestCase("24tCoach_EngineOnly",
+			@"TestData\Components\24t Coach.veng",
+			@"TestData\Cycles\Coach Engine Only.vdri",
+			@"TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly.vmod")]
+		[TestCase("24tCoach_EngineOnlyPaux",
+			@"TestData\Components\24t Coach.veng",
+			@"TestData\Cycles\Coach Engine Only Paux.vdri",
+			@"TestData\Results\EngineOnlyCycles\24tCoach_EngineOnlyPaux.vmod")]
+		[TestCase("24tCoach_EngineOnlyFullLoad",
+			@"TestData\Components\24t Coach.veng",
+			@"TestData\Cycles\Coach Engine Only FullLoad.vdri",
+			@"TestData\Results\EngineOnlyCycles\24tCoach_EngineOnlyFullLoad.vmod")]
+		public void TestEngineOnlyDrivingCycle(string testName, string engineFile, string cycleFile, string modalResultFile)
 		{
-			var data = DrivingCycleDataReader.ReadFromFile(TestContext.DataRow["CycleFile"].ToString(), CycleType.EngineOnly,
+			var data = DrivingCycleDataReader.ReadFromFile(cycleFile, CycleType.EngineOnly,
 				false);
 			var vehicle = new VehicleContainer(ExecutionMode.Engineering);
 			// ReSharper disable once ObjectCreationAsStatement
 			new MockDrivingCycle(vehicle, data);
-			var engineData =
-				MockSimulationDataFactory.CreateEngineDataFromFile(TestContext.DataRow["EngineFile"].ToString());
+			var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(engineFile);
 
 			var aux = new EngineAuxiliary(vehicle);
 			aux.AddDirect();
@@ -84,8 +91,8 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle
 
 			port.Initialize(data.Entries.First().Torque, data.Entries.First().AngularVelocity);
 			foreach (var cycleEntry in data.Entries) {
-				var response = port.Request(absTime, dt, cycleEntry.Torque, cycleEntry.AngularVelocity);
-				Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
+				// ReSharper disable once UnusedVariable
+				var response = (ResponseSuccess)port.Request(absTime, dt, cycleEntry.Torque, cycleEntry.AngularVelocity);
 				foreach (var sc in vehicle.SimulationComponents()) {
 					modData[ModalResultField.time] = absTime + dt / 2;
 					sc.CommitSimulationStep(modData);
@@ -96,11 +103,10 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle
 			}
 			modData.Finish(VectoRun.Status.Success);
 
-			ResultFileHelper.TestModFile(TestContext.DataRow["ModalResultFile"].ToString(),
-				modFile + Constants.FileExtensions.ModDataFile);
+			ResultFileHelper.TestModFile(modalResultFile, modFile + Constants.FileExtensions.ModDataFile);
 		}
 
-		[TestMethod]
+		[TestCase]
 		public void AssembleEngineOnlyPowerTrain()
 		{
 			var dataWriter = new MockModalDataContainer();
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
index d6f68d7466..158cc4ed99 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
@@ -35,7 +35,7 @@ using System.Data;
 using System.IO;
 using System.Linq;
 using System.Reflection;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+using NUnit.Framework;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.Configuration;
@@ -47,9 +47,14 @@ using TUGraz.VectoCore.Models.SimulationComponent.Impl;
 using TUGraz.VectoCore.Tests.Utils;
 using TUGraz.VectoCore.Utils;
 
+// ReSharper disable UnusedVariable
+// ReSharper disable NotAccessedVariable
+// ReSharper disable CollectionNeverQueried.Local
+// ReSharper disable RedundantAssignment
+
 namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 {
-	[TestClass]
+	[TestFixture]
 	public class CombustionEngineTest
 	{
 		protected double Tolerance = 1E-3;
@@ -58,15 +63,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 
 		private const string TruckEngine = @"TestData\Components\40t_Long_Haul_Truck.veng";
 
-		public TestContext TestContext { get; set; }
-
-		[ClassInitialize]
+		[TestCase]
 		public static void ClassInitialize(TestContext ctx)
 		{
 			AppDomain.CurrentDomain.SetData("DataDirectory", Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
 		}
 
-		[TestMethod]
+		[TestCase]
 		public void TestEngineHasOutPort()
 		{
 			var vehicle = new VehicleContainer(ExecutionMode.EngineOnly);
@@ -77,7 +80,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			Assert.IsNotNull(port);
 		}
 
-		[TestMethod]
+		[TestCase]
 		public void TestOutPortRequestNotFailing()
 		{
 			var vehicle = new VehicleContainer(ExecutionMode.EngineOnly);
@@ -95,7 +98,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			port.Request(absTime, dt, torque, engineSpeed);
 		}
 
-		[TestMethod]
+		[TestCase]
 		public void TestSimpleModalData()
 		{
 			var vehicle = new VehicleContainer(ExecutionMode.Engineering);
@@ -155,25 +158,31 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			dataWriter.Data.WriteToFile(@"test1.csv");
 		}
 
-		[TestMethod]
-		[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\TestData\\EngineFullLoadJumps.csv",
-			"EngineFullLoadJumps#csv", DataAccessMethod.Sequential)]
-		public void TestEngineOnlyEngineFullLoadJump()
+		[TestCase("Test1Hz", @"TestData\Components\24t Coach.veng", 1000, 50, 50,
+			@"TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_1Hz.csv")]
+		[TestCase("Test10Hz", @"TestData\Components\24t Coach.veng", 1000, 50, 50,
+			@"TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_10Hz.csv")]
+		[TestCase("TestvarHz", @"TestData\Components\24t Coach.veng", 1000, 50, 50,
+			@"TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_varHz.csv")]
+		[TestCase("Test10Hz", @"TestData\Components\24t Coach_IncPT1.veng", 1000, 50, 50,
+			@"TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_10Hz_IncPT1.csv")]
+		public void TestEngineOnlyEngineFullLoadJump(string testName, string engineFile, double rpm, double initialIdleLoad,
+			double finalIdleLoad, string resultFile)
 		{
 			var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering);
-			var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(TestContext.DataRow["EngineFile"].ToString());
+			var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(engineFile);
 			var engine = new EngineOnlyCombustionEngine(vehicleContainer, engineData);
 
-			var expectedResults = VectoCSVFile.Read(TestContext.DataRow["ResultFile"].ToString());
+			var expectedResults = VectoCSVFile.Read(resultFile);
 
 			var requestPort = engine.OutPort();
 
 			//var modalData = new ModalDataWriter(string.Format("load_jump_{0}.csv", TestContext.DataRow["TestName"].ToString()));
 			var modalData = new MockModalDataContainer();
 
-			var idlePower = double.Parse(TestContext.DataRow["initialIdleLoad"].ToString()).SI<Watt>();
+			var idlePower = initialIdleLoad.SI<Watt>();
 
-			var angularSpeed = double.Parse(TestContext.DataRow["rpm"].ToString()).RPMtoRad();
+			var angularSpeed = rpm.RPMtoRad();
 
 			var t = 0.SI<Second>();
 			var dt = 0.1.SI<Second>();
@@ -187,7 +196,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			// dt = TimeSpan.FromSeconds(double.Parse(TestContext.DataRow["dt"].ToString(), CultureInfo.InvariantCulture));
 			// dt = TimeSpan.FromSeconds(expectedResults.Rows[i].ParseDouble(0)) - t;
 			var engineLoadPower = engineData.FullLoadCurve.FullLoadStationaryPower(angularSpeed);
-			idlePower = double.Parse(TestContext.DataRow["finalIdleLoad"].ToString()).SI<Watt>();
+			idlePower = finalIdleLoad.SI<Watt>();
 			for (; t < 25; t += dt, i++) {
 				dt = (expectedResults.Rows[i + 1].ParseDouble(0) - expectedResults.Rows[i].ParseDouble(0)).SI<Second>();
 				if (t >= 10.SI<Second>()) {
@@ -205,25 +214,31 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			modalData.Finish(VectoRun.Status.Success);
 		}
 
-		[TestMethod]
-		[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\TestData\\EngineFullLoadJumps.csv",
-			"EngineFullLoadJumps#csv", DataAccessMethod.Sequential)]
-		public void TestEngineFullLoadJump()
+		[TestCase("Test1Hz", @"TestData\Components\24t Coach.veng", 1000, 50, 50,
+			@"TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_1Hz.csv")]
+		[TestCase("Test10Hz", @"TestData\Components\24t Coach.veng", 1000, 50, 50,
+			@"TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_10Hz.csv")]
+		[TestCase("TestvarHz", @"TestData\Components\24t Coach.veng", 1000, 50, 50,
+			@"TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_varHz.csv")]
+		[TestCase("Test10Hz", @"TestData\Components\24t Coach_IncPT1.veng", 1000, 50, 50,
+			@"TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_10Hz_IncPT1.csv")]
+		public void TestEngineFullLoadJump(string testName, string engineFile, double rpm, double initialIdleLoad,
+			double finalIdleLoad, string resultFile)
 		{
 			var vehicleContainer = new VehicleContainer(ExecutionMode.Engineering);
-			var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(TestContext.DataRow["EngineFile"].ToString());
+			var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(engineFile);
 			var engine = new CombustionEngine(vehicleContainer, engineData);
 
-			var expectedResults = VectoCSVFile.Read(TestContext.DataRow["ResultFile"].ToString());
+			var expectedResults = VectoCSVFile.Read(resultFile);
 
 			var requestPort = engine.OutPort();
 
-			//var modalData = new ModalDataWriter(string.Format("load_jump_{0}.csv", TestContext.DataRow["TestName"].ToString()));
+			//var modalData = new ModalDataWriter(string.Format("load_jump_{0}.csv", TestName));
 			var modalData = new MockModalDataContainer();
 
-			var idlePower = double.Parse(TestContext.DataRow["initialIdleLoad"].ToString()).SI<Watt>();
+			var idlePower = initialIdleLoad.SI<Watt>();
 
-			var angularSpeed = double.Parse(TestContext.DataRow["rpm"].ToString()).RPMtoRad();
+			var angularSpeed = rpm.RPMtoRad();
 
 			var t = 0.SI<Second>();
 			var dt = 0.1.SI<Second>();
@@ -237,7 +252,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			// dt = TimeSpan.FromSeconds(double.Parse(TestContext.DataRow["dt"].ToString(), CultureInfo.InvariantCulture));
 			// dt = TimeSpan.FromSeconds(expectedResults.Rows[i].ParseDouble(0)) - t;
 			var engineLoadPower = engineData.FullLoadCurve.FullLoadStationaryPower(angularSpeed);
-			idlePower = double.Parse(TestContext.DataRow["finalIdleLoad"].ToString()).SI<Watt>();
+			idlePower = finalIdleLoad.SI<Watt>();
 			for (; t < 25; t += dt, i++) {
 				dt = (expectedResults.Rows[i + 1].ParseDouble(0) - expectedResults.Rows[i].ParseDouble(0)).SI<Second>();
 				if (t >= 10.SI<Second>()) {
@@ -255,7 +270,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			modalData.Finish(VectoRun.Status.Success);
 		}
 
-		[TestMethod]
+		[TestCase]
 		public void EngineIdleJump()
 		{
 			var container = new VehicleContainer(ExecutionMode.Engineering);
@@ -265,8 +280,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var engine = new CombustionEngine(container, engineData);
 			var clutch = new Clutch(container, engineData, engine.IdleController);
 
-			// ReSharper disable once ObjectCreationAsStatement
-			new MockDriver(container);
+			var d = new MockDriver(container);
 
 			var aux = new EngineAuxiliary(container);
 			aux.AddConstant("", 5000.SI<Watt>());
@@ -297,9 +311,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var absTime = 0.SI<Second>();
 			var dt = Constants.SimulationSettings.TargetTimeInterval;
 
-			var response = requestPort.Request(absTime, dt, torque, angularVelocity);
+			var response = (ResponseSuccess)requestPort.Request(absTime, dt, torque, angularVelocity);
 
-			Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
 			container.CommitSimulationStep(absTime, dt);
 			var row = dataWriter.Data.Rows.Cast<DataRow>().Last();
 			Assert.AreEqual(100530.96491487339.SI<Watt>().Value(), ((SI)row[ModalResultField.P_eng_out.GetName()]).Value());
@@ -314,9 +327,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			gearbox.Gear = 0;
 			torque = 0.SI<NewtonMeter>();
 
-			response = gearbox.Request(absTime, dt, torque, angularVelocity);
+			response = (ResponseSuccess)gearbox.Request(absTime, dt, torque, angularVelocity);
 
-			Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
 			container.CommitSimulationStep(absTime, dt);
 			row = dataWriter.Data.Rows.Cast<DataRow>().Last();
 
@@ -325,7 +337,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			Assert.AreEqual(800.RPMtoRad(), row[ModalResultField.n_eng_avg.GetName()]);
 		}
 
-		[TestMethod]
+		[TestCase]
 		public void EngineIdleControllerTestCoach()
 		{
 			VehicleContainer container;
@@ -339,11 +351,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var angularVelocity = 800.RPMtoRad();
 			var torque = 100000.SI<Watt>() / angularVelocity;
 
-			var response = requestPort.Initialize(torque, angularVelocity);
-			Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
+			var response = (ResponseSuccess)requestPort.Initialize(torque, angularVelocity);
 
-			response = requestPort.Request(absTime, dt, torque, angularVelocity);
-			Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
+			response = (ResponseSuccess)requestPort.Request(absTime, dt, torque, angularVelocity);
 			Assert.AreEqual(105000, response.EnginePowerRequest.Value(), Tolerance);
 			container.CommitSimulationStep(absTime, dt);
 			absTime += dt;
@@ -354,11 +364,10 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			for (var i = 0; i < engineSpeed.Length; i++) {
 				torque = 0.SI<NewtonMeter>();
 
-				response = requestPort.Request(absTime, dt, torque, null);
+				response = (ResponseSuccess)requestPort.Request(absTime, dt, torque, null);
 				container.CommitSimulationStep(absTime, dt);
 				absTime += dt;
 
-				Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
 				Assert.AreEqual(engineSpeed[i].Value(), engine.PreviousState.EngineSpeed.Value(), Tolerance, "i: {0}", i);
 				Assert.AreEqual(enginePower[i].Value(), engine.PreviousState.EnginePower.Value(), Tolerance, "i: {0}", i);
 			}
@@ -381,7 +390,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 		| 70.5     | 308.729     | 1284.139  | 2295.815    | 9        |
 				*/
 
-		[TestMethod]
+		[TestCase]
 		public void EngineIdleControllerTestTruck()
 		{
 			VehicleContainer container;
@@ -398,11 +407,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var angularVelocity = 1680.RPMtoRad();
 			var torque = 345000.SI<Watt>() / angularVelocity;
 
-			var response = requestPort.Initialize(torque, angularVelocity);
-			Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
+			var response = (ResponseSuccess)requestPort.Initialize(torque, angularVelocity);
 
-			response = requestPort.Request(absTime, dt, torque, angularVelocity);
-			Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
+			response = (ResponseSuccess)requestPort.Request(absTime, dt, torque, angularVelocity);
 			Assert.AreEqual(350000, response.EnginePowerRequest.Value(), Tolerance);
 			container.CommitSimulationStep(absTime, dt);
 			absTime += dt;
@@ -425,8 +432,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			for (var i = 0; i < engineSpeed.Length; i++) {
 				torque = 0.SI<NewtonMeter>();
 
-				response = requestPort.Request(absTime, dt, torque, null);
-				Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
+				response = (ResponseSuccess)requestPort.Request(absTime, dt, torque, null);
 
 				container.CommitSimulationStep(absTime, dt);
 
@@ -439,7 +445,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			//dataWriter.Finish();
 		}
 
-		[TestMethod]
+		[TestCase]
 		public void EngineIdleControllerTest2Truck()
 		{
 			VehicleContainer container;
@@ -458,11 +464,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var torque = (engine.ModelData.FullLoadCurve.DragLoadStationaryPower(angularVelocity) - 5000.SI<Watt>()) /
 						angularVelocity;
 
-			var response = requestPort.Initialize(torque, angularVelocity);
-			Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
+			var response = (ResponseSuccess)requestPort.Initialize(torque, angularVelocity);
 
-			response = requestPort.Request(absTime, dt, torque, angularVelocity);
-			Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
+			response = (ResponseSuccess)requestPort.Request(absTime, dt, torque, angularVelocity);
 			Assert.AreEqual(-14829.79713, response.EnginePowerRequest.Value(), Tolerance);
 			container.CommitSimulationStep(absTime, dt);
 			absTime += dt;
@@ -484,8 +488,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			var engSpeedResults = new List<dynamic>();
 			torque = 0.SI<NewtonMeter>();
 			for (var i = 0; i < engineSpeed.Length; i++) {
-				response = requestPort.Request(absTime, dt, torque, null);
-				Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
+				response = (ResponseSuccess)requestPort.Request(absTime, dt, torque, null);
 
 				container.CommitSimulationStep(absTime, dt);
 
@@ -498,7 +501,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			//dataWriter.Finish();
 		}
 
-		[TestMethod]
+		[TestCase]
 		public void Test_EngineData()
 		{
 			var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(CoachEngine);
@@ -534,8 +537,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			engine = new CombustionEngine(container, engineData);
 			var clutch = new Clutch(container, engineData, engine.IdleController);
 
-			// ReSharper disable once ObjectCreationAsStatement
-			new MockDriver(container);
+			var d = new MockDriver(container);
 
 			var aux = new EngineAuxiliary(container);
 			aux.AddConstant("", 5000.SI<Watt>());
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponentData/GearboxDataTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponentData/GearboxDataTest.cs
index 7bb2e59eff..88c249f77f 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponentData/GearboxDataTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponentData/GearboxDataTest.cs
@@ -31,14 +31,12 @@
 
 using System;
 using System.Data;
-using System.Globalization;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
+using NUnit.Framework;
 using TUGraz.VectoCommon.Exceptions;
 using TUGraz.VectoCommon.Models;
 using TUGraz.VectoCommon.Utils;
 using TUGraz.VectoCore.InputData.Reader;
 using TUGraz.VectoCore.InputData.Reader.DataObjectAdaper;
-using TUGraz.VectoCore.Models.SimulationComponent.Data;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
 using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
 using TUGraz.VectoCore.Tests.Utils;
@@ -46,26 +44,24 @@ using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 {
-	[TestClass]
+	[TestFixture]
 	public class GearboxDataTest
 	{
-		public TestContext TestContext { get; set; }
-
 		protected const string GearboxFile = @"Testdata\Components\24t Coach.vgbx";
 
 		protected const string EngineFile = @"TestData\Components\24t Coach.veng";
 
-		[TestMethod]
+		[TestCase]
 		public void TestGearboxDataReadTest()
 		{
 			var axleData = MockSimulationDataFactory.CreateAxleGearDataFromFile(GearboxFile);
 			Assert.AreEqual(3.240355, axleData.AxleGear.Ratio, 0.0001);
-			
+
 			var gbxData = MockSimulationDataFactory.CreateGearboxDataFromFile(GearboxFile, EngineFile, false);
 			Assert.AreEqual(GearboxType.AMT, gbxData.Type);
 			Assert.AreEqual(1.0, gbxData.TractionInterruption.Value(), 0.0001);
 			Assert.AreEqual(8, gbxData.Gears.Count);
-			
+
 			Assert.AreEqual(1.0, gbxData.Gears[7].Ratio, 0.0001);
 
 			Assert.AreEqual(-400, gbxData.Gears[1].ShiftPolygon.Downshift[0].Torque.Value(), 0.0001);
@@ -77,46 +73,48 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 			Assert.AreEqual(13.072, gbxData.Gears[1].LossMap[15].TorqueLoss.Value(), 0.0001);
 		}
 
-		[TestMethod]
-		[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
-			"|DataDirectory|\\TestData\\AxleGearLossInterpolation.csv",
-			"AxleGearLossInterpolation#csv", DataAccessMethod.Sequential)]
-		public void TestInterpolation()
+		[TestCase("Test1", @"TestData\Components\24t Coach.vgbx", 520, 20.320, "A", 279698.4, 9401.44062)]
+		[TestCase("Test2", @"TestData\Components\24t Coach.vgbx", 520, 0.5858335, "A", 17173.5, 409.773677587509)]
+		[TestCase("Test3", @"TestData\Components\24t Coach.vgbx", 520, 0.3996113, "A", 292.5253, 118.282541632652)]
+		[TestCase("Test4", @"TestData\Components\24t Coach.vgbx", 520, 5.327739, "A", 57431.12, 2222.78785705566)]
+		[TestCase("Test5", @"TestData\Components\24t Coach.vgbx", 520, 5.661779, "A", 73563.93, 2553.00283432007)]
+		[TestCase("Test6", @"TestData\Components\24t Coach.vgbx", 520, 14.15156, "A", 212829.5, 6822.16882705688)]
+		[TestCase("Test7", @"TestData\Components\24t Coach.vgbx", 520, 14.55574, "A", 15225.52, 4308.41207504272)]
+		[TestCase("Test8", @"TestData\Components\24t Coach.vgbx", 520, 4.601774, "A", -1240.225, 1362.09738254547)]
+		[TestCase("Test9", @"TestData\Components\24t Coach.vgbx", 520, 3.934339, "A", -698.5989, 1164.5405292511)]
+		public void TestInterpolation(string testName, string gearboxDataFile, double rDyn, double v, string gear,
+			double powerGbxOut, double gbxPowerLoss)
 		{
-			var rdyn = double.Parse(TestContext.DataRow["rDyn"].ToString(), CultureInfo.InvariantCulture);
-			var speed = double.Parse(TestContext.DataRow["v"].ToString(), CultureInfo.InvariantCulture);
+			var rdyn = rDyn;
+
+			var angSpeed = (60 * v / (2 * rdyn * Math.PI / 1000)).RPMtoRad();
 
-			//var gbxData = MockSimulationDataFactory.CreateGearboxDataFromFile(TestContext.DataRow["GearboxDataFile"].ToString(),
-			//	EngineFile);
-			var axleData = MockSimulationDataFactory.CreateAxleGearDataFromFile(TestContext.DataRow["GearboxDataFile"].ToString());
+			var axleData = MockSimulationDataFactory.CreateAxleGearDataFromFile(gearboxDataFile);
 
-			var PvD = double.Parse(TestContext.DataRow["PowerGbxOut"].ToString(), CultureInfo.InvariantCulture).SI<Watt>();
+			var pvD = powerGbxOut.SI<Watt>();
 
-			var torqueToWheels = Formulas.PowerToTorque(PvD, SpeedToAngularSpeed(speed, rdyn));
+			var torqueToWheels = Formulas.PowerToTorque(pvD, angSpeed);
 			var torqueFromEngine = 0.SI<NewtonMeter>();
 
-			var angSpeed = SpeedToAngularSpeed(speed, rdyn);
-			if (TestContext.DataRow["Gear"].ToString() == "A") {
+			if (gear == "A") {
 				torqueFromEngine = torqueToWheels / axleData.AxleGear.Ratio;
 				torqueFromEngine += axleData.AxleGear.LossMap.GetTorqueLoss(angSpeed, torqueToWheels);
 			}
 
 			var powerEngine = Formulas.TorqueToPower(torqueFromEngine, angSpeed * axleData.AxleGear.Ratio);
-			var loss = powerEngine - PvD;
+			var loss = powerEngine - pvD;
 
-			Assert.AreEqual(double.Parse(TestContext.DataRow["GbxPowerLoss"].ToString(), CultureInfo.InvariantCulture),
-				loss.Value(), 0.1,
-				TestContext.DataRow["TestName"].ToString());
+			Assert.AreEqual(gbxPowerLoss, loss.Value(), 0.1, testName);
 		}
 
-		[TestMethod]
+		[TestCase]
 		public void TestLossMap_IN_10_CONST_Interpolation_Extrapolation()
 		{
 			var data = new DataTable();
 			data.Columns.Add("");
 			data.Columns.Add("");
 			data.Columns.Add("");
-			data.Rows.Add("0", "0", "10"); //         (0,100):10 --  (100,150):10
+			data.Rows.Add("0", "0", "10"); //         (0,100):10 --  (100,100):10
 			data.Rows.Add("0", "100", "10"); //        |      \          |
 			data.Rows.Add("100", "0", "10"); //        |       \         |
 			data.Rows.Add("100", "100", "10"); //    (0,0):10  ----- (100,10):10
@@ -153,14 +151,14 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 			AssertHelper.AreRelativeEqual(10, map.GetTorqueLoss(120.RPMtoRad(), 50.SI<NewtonMeter>()));
 		}
 
-		[TestMethod]
+		[TestCase]
 		public void TestLossMap_OUT_10_CONST_Interpolation_Extrapolation()
 		{
 			var data = new DataTable();
 			data.Columns.Add("");
 			data.Columns.Add("");
 			data.Columns.Add("");
-			data.Rows.Add("0", "0", "10"); //         (0,100):10 --  (100,150):10
+			data.Rows.Add("0", "0", "10"); //         (0,100):10 --  (100,100):10
 			data.Rows.Add("0", "100", "10"); //        |      \          |
 			data.Rows.Add("100", "0", "10"); //        |       \         |
 			data.Rows.Add("100", "100", "10"); //    (0,0):10  ----- (100,10):10
@@ -197,14 +195,14 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 			AssertHelper.AreRelativeEqual(40, map.GetOutTorque(120.RPMtoRad(), 50.SI<NewtonMeter>(), true));
 		}
 
-		[TestMethod]
+		[TestCase]
 		public void TestLossMap_IN_Interpolation_Extrapolation()
 		{
 			var data = new DataTable();
 			data.Columns.Add("");
 			data.Columns.Add("");
 			data.Columns.Add("");
-			data.Rows.Add("0", "0", "0"); //         (0,100):10 --  (100,150):40
+			data.Rows.Add("0", "0", "0"); //         (0,110):10 --  (100,140):40
 			data.Rows.Add("0", "110", "10"); //        |      \         |
 			data.Rows.Add("100", "10", "10"); //        |       \       |
 			data.Rows.Add("100", "140", "40"); //    (0,0):0 ----- (100,10):10
@@ -241,7 +239,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 			AssertHelper.AreRelativeEqual(25, map.GetTorqueLoss(120.RPMtoRad(), 50.SI<NewtonMeter>()));
 		}
 
-		[TestMethod]
+		[TestCase]
 		public void TestLossMap_OUT_Interpolation_Extrapolation()
 		{
 			var data = new DataTable();
@@ -288,10 +286,10 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 			AssertHelper.Exception<VectoException>(() => { map.GetOutTorque(120.RPMtoRad(), 50.SI<NewtonMeter>()); });
 		}
 
-		[TestMethod]
+		[TestCase]
 		public void TestFullLoadCurveIntersection()
 		{
-			var engineFLDString = new[] {
+			var engineFldString = new[] {
 				"560, 1180, -149",
 				"600, 1282, -148",
 				"800, 1791, -149",
@@ -303,18 +301,18 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 				"2000, 1352, -301",
 				"2100, 1100, -320",
 			};
-			var gbxFLDString = new[] {
+			var gbxFldString = new[] {
 				"560, 2500",
 				"2100, 2500"
 			};
 			var dataEng =
-				VectoCSVFile.ReadStream(InputDataHelper.InputDataAsStream("n [U/min],Mfull [Nm],Mdrag [Nm]", engineFLDString));
-			var engineFLD = EngineFullLoadCurve.Create(dataEng, true);
+				VectoCSVFile.ReadStream(InputDataHelper.InputDataAsStream("n [U/min],Mfull [Nm],Mdrag [Nm]", engineFldString));
+			var engineFld = EngineFullLoadCurve.Create(dataEng, true);
 
-			var dataGbx = VectoCSVFile.ReadStream(InputDataHelper.InputDataAsStream("n [U/min],Mfull [Nm]", gbxFLDString));
-			var gbxFLD = FullLoadCurveReader.Create(dataGbx, true);
+			var dataGbx = VectoCSVFile.ReadStream(InputDataHelper.InputDataAsStream("n [U/min],Mfull [Nm]", gbxFldString));
+			var gbxFld = FullLoadCurveReader.Create(dataGbx, true);
 
-			var fullLoadCurve = AbstractSimulationDataAdapter.IntersectFullLoadCurves(engineFLD, gbxFLD);
+			var fullLoadCurve = AbstractSimulationDataAdapter.IntersectFullLoadCurves(engineFld, gbxFld);
 
 			Assert.AreEqual(10, fullLoadCurve.FullLoadEntries.Count);
 
@@ -325,25 +323,20 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
 		/// <summary>
 		///		VECTO-190
 		/// </summary>
-		[TestMethod]
+		[TestCase]
 		public void TestFullLoadSorting()
 		{
-			var gbxFLDString = new[] {
+			var gbxFldString = new[] {
 				"600, 1000",
 				"2400, 2000",
 				"1000, 500"
 			};
 
-			var dataGbx = VectoCSVFile.ReadStream(InputDataHelper.InputDataAsStream("n [U/min],Mfull [Nm]", gbxFLDString));
-			var gbxFLD = FullLoadCurveReader.Create(dataGbx, true);
+			var dataGbx = VectoCSVFile.ReadStream(InputDataHelper.InputDataAsStream("n [U/min],Mfull [Nm]", gbxFldString));
+			var gbxFld = FullLoadCurveReader.Create(dataGbx, true);
 
-			var maxTorque = gbxFLD.FullLoadStationaryTorque(800.RPMtoRad());
+			var maxTorque = gbxFld.FullLoadStationaryTorque(800.RPMtoRad());
 			Assert.AreEqual(750, maxTorque.Value());
 		}
-
-		protected PerSecond SpeedToAngularSpeed(double v, double r)
-		{
-			return ((60 * v) / (2 * r * Math.PI / 1000)).RPMtoRad();
-		}
 	}
 }
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/AxleGearLossInterpolation.csv b/VectoCore/VectoCoreTest/TestData/AxleGearLossInterpolation.csv
deleted file mode 100644
index 1c13687113..0000000000
--- a/VectoCore/VectoCoreTest/TestData/AxleGearLossInterpolation.csv
+++ /dev/null
@@ -1,10 +0,0 @@
-TestName,GearboxDataFile,rDyn,v,Gear,PowerGbxOut,GbxPowerLoss
-Test1,TestData\Components\24t Coach.vgbx,"520","20.320",A,"279698.4","9401.44062"
-Test2,TestData\Components\24t Coach.vgbx,"520","0.5858335",A,"17173.5","409.773677587509"
-Test3,TestData\Components\24t Coach.vgbx,"520","0.3996113",A,"292.5253","118.282541632652"
-Test4,TestData\Components\24t Coach.vgbx,"520","5.327739",A,"57431.12","2222.78785705566"
-Test5,TestData\Components\24t Coach.vgbx,"520","5.661779",A,"73563.93","2553.00283432007"
-Test6,TestData\Components\24t Coach.vgbx,"520","14.15156",A,"212829.5","6822.16882705688"
-Test7,TestData\Components\24t Coach.vgbx,"520","14.55574",A,"15225.52","4308.41207504272"
-Test8,TestData\Components\24t Coach.vgbx,"520","4.601774",A,"-1240.225","1362.09738254547"
-Test9,TestData\Components\24t Coach.vgbx,"520","3.934339",A,"-698.5989","1164.5405292511"
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/TestData/EngineFullLoadJumps.csv b/VectoCore/VectoCoreTest/TestData/EngineFullLoadJumps.csv
deleted file mode 100644
index 19ea6b21d6..0000000000
--- a/VectoCore/VectoCoreTest/TestData/EngineFullLoadJumps.csv
+++ /dev/null
@@ -1,5 +0,0 @@
-TestName,EngineFile,rpm,initialIdleLoad,finalIdleLoad,ResultFile
-Test1Hz,TestData\Components\24t Coach.veng,1000,50,50,TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_1Hz.csv
-Test10Hz,TestData\Components\24t Coach.veng,1000,50,50,TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_10Hz.csv
-TestvarHz,TestData\Components\24t Coach.veng,1000,50,50,TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_varHz.csv
-Test10Hz,TestData\Components\24t Coach_IncPT1.veng,1000,50,50,TestData\Results\EngineFullLoadJumps\EngineFLJ_1000rpm_10Hz_IncPT1.csv
diff --git a/VectoCore/VectoCoreTest/TestData/EngineTests.csv b/VectoCore/VectoCoreTest/TestData/EngineTests.csv
deleted file mode 100644
index 25b6bfab9b..0000000000
--- a/VectoCore/VectoCoreTest/TestData/EngineTests.csv
+++ /dev/null
@@ -1,4 +0,0 @@
-TestName,EngineFile,CycleFile,ModalResultFile
-24tCoach_EngineOnly,TestData\Components\24t Coach.veng,TestData\Cycles\Coach Engine Only.vdri,TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly.vmod
-24tCoach_EngineOnlyPaux,TestData\Components\24t Coach.veng,TestData\Cycles\Coach Engine Only Paux.vdri,TestData\Results\EngineOnlyCycles\24tCoach_EngineOnlyPaux.vmod
-24tCoach_EngineOnlyFullLoad,TestData\Components\24t Coach.veng,TestData\Cycles\Coach Engine Only FullLoad.vdri,TestData\Results\EngineOnlyCycles\24tCoach_EngineOnlyFullLoad.vmod
\ No newline at end of file
diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
index 8bed05e937..0a91732e5e 100644
--- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
@@ -327,9 +327,6 @@
     <None Include="TestData\Cycles\Coach Engine Only.vdri">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="TestData\EngineFullLoadJumps.csv">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
     <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.v2.vsum">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
@@ -1322,14 +1319,6 @@
     <None Include="TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly.vmod">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="TestData\EngineTests.csv">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="TestData\AxleGearLossInterpolation.csv">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
   </ItemGroup>
   <ItemGroup>
     <Folder Include="Integration\FullPowertrain\" />
-- 
GitLab