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