From ab5914db8007e2f49b892d21ce1baf5b7d2fa354 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Tue, 17 May 2016 15:24:51 +0200 Subject: [PATCH] adding tests for coasting --- .../DriverStrategy/CoastingTests.cs | 93 +++++++++++++++++++ .../Integration/Truck40tPowerTrain.cs | 10 +- VectoCore/VectoCoreTest/VectoCoreTest.csproj | 1 + 3 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 VectoCore/VectoCoreTest/Integration/DriverStrategy/CoastingTests.cs diff --git a/VectoCore/VectoCoreTest/Integration/DriverStrategy/CoastingTests.cs b/VectoCore/VectoCoreTest/Integration/DriverStrategy/CoastingTests.cs new file mode 100644 index 0000000000..bc6533bab9 --- /dev/null +++ b/VectoCore/VectoCoreTest/Integration/DriverStrategy/CoastingTests.cs @@ -0,0 +1,93 @@ +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using NUnit.Framework; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Tests.Utils; +using Assert = Microsoft.VisualStudio.TestTools.UnitTesting.Assert; + +namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy +{ + [TestFixture] + public class CoastingTests + { + [TestFixtureSetUp] + public void DisableLogging() + { + //LogManager.DisableLogging(); +//#if TRACE + GraphWriter.Enable(); +//#else +// GraphWriter.Disable(); +//#endif + + GraphWriter.Xfields = new[] { ModalResultField.dist }; + + GraphWriter.Yfields = new[] { + ModalResultField.v_act, ModalResultField.acc, ModalResultField.n_eng_avg, ModalResultField.Gear, + ModalResultField.P_eng_out, /*ModalResultField.T_eng_fcmap, */ ModalResultField.FCMap, + }; + GraphWriter.PlotDrivingMode = true; + GraphWriter.Series1Label = "Vecto 3"; + } + + + [Test, + TestCase(60, 20, 0), + TestCase(60, 20, 0.6), + TestCase(60, 20, 1.4), + TestCase(60, 20, 2.7), + TestCase(60, 20, 3.3), + TestCase(60, 20, 3.7), + TestCase(60, 35, 5.3), + ] + public void Truck_Coasting_Test(double v1, double v2, double slope) + { + Assert.IsTrue(v1 > v2); + + var cycle = new[] { + // <s>,<v>,<grad>,<stop> + string.Format(" 0, {0}, {2}, 0", v1, v2, slope), + string.Format("1000, {1}, {2}, 0", v1, v2, slope), + string.Format("1100, {1}, 0, 0", v1, v2, slope) + }; + System.IO.Directory.CreateDirectory(string.Format(@"Coast_{0}_{1}", v1, v2, slope)); + var slopePrefix = ""; + if (!slope.IsEqual(0)) { + slopePrefix = slope > 0 ? "uh_" : "dh_"; + } + var modFile = string.Format(@"Coast_{0}_{1}\Truck_Coast_{0}_{1}_{3}{2:0.0}.vmod", v1, v2, Math.Abs(slope), + slopePrefix); + var cycleData = SimpleDrivingCycles.CreateCycleData(cycle); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycleData, modFile); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); + + GraphWriter.Write(modFile); + } + + [Test, + TestCase(40), + TestCase(45), + TestCase(50), + TestCase(55), + TestCase(60), + TestCase(65), + TestCase(70), + TestCase(75), + TestCase(80), + ] + public void Truck_Coasting_Variability_Test(double v1) + { + const double vStep = 2.5; + const double vMin = 40; + Assert.IsTrue(vMin - vStep > 0); + for (var v2 = vMin; v2 <= v1 - vStep; v2 += vStep) { + for (var slope = -6.0; slope <= 6; slope += 0.1) { + Truck_Coasting_Test(v1, v2, slope); + } + } + } + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs index 2d8b84e287..efab444f69 100644 --- a/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs +++ b/VectoCore/VectoCoreTest/Integration/Truck40tPowerTrain.cs @@ -31,6 +31,7 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; @@ -78,12 +79,13 @@ namespace TUGraz.VectoCore.Tests.Integration } public static VehicleContainer CreatePowerTrain(DrivingCycleData cycleData, string modFileName, - Kilogram massExtra, - Kilogram loading, bool overspeed = false) + Kilogram massExtra, Kilogram loading, bool overspeed = false) { var fileWriter = new FileOutputWriter(modFileName); - var modData = new ModalDataContainer(modFileName, fileWriter); - var container = new VehicleContainer(executionMode: ExecutionMode.Engineering, modData: modData) { RunData = new VectoRunData{ JobName = modFileName, Cycle = cycleData}}; + var modData = new ModalDataContainer(Path.GetFileName(modFileName), fileWriter); + var container = new VehicleContainer(executionMode: ExecutionMode.Engineering, modData: modData) { + RunData = new VectoRunData { JobName = modFileName, Cycle = cycleData } + }; var engineData = MockSimulationDataFactory.CreateEngineDataFromFile(EngineFile); var axleGearData = CreateAxleGearData(); diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index c9a919e118..8bed05e937 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -85,6 +85,7 @@ <Compile Include="Integration\BusAuxiliaries\SimpleCycleTest.cs" /> <Compile Include="Integration\CoachAdvancedAuxPowertrain.cs" /> <Compile Include="Integration\CoachPowerTrain.cs" /> + <Compile Include="Integration\DriverStrategy\CoastingTests.cs" /> <Compile Include="Integration\DriverStrategy\DriverStrategyTestCoach.cs" /> <Compile Include="Integration\DriverStrategy\DriverStrategyTestTruck.cs" /> <Compile Include="Integration\FullCycleDeclarationTest.cs"> -- GitLab