From 6a6550b52e5cc81ed20d8d0e0abc6e3530335a97 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Wed, 24 Jul 2019 14:00:16 +0200 Subject: [PATCH] adding testcases for filtering 'duplicate' entries in driving cycle. if vair_res and vail_beta are provided intermediate cycle entries must not be deleted. --- .../Reader/DrivingCycleDataReader.cs | 9 +++ .../Models/Simulation/DrivingCycleTests.cs | 56 +++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs b/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs index 49162f7020..d76d3222b8 100644 --- a/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs +++ b/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs @@ -306,6 +306,15 @@ namespace TUGraz.VectoCore.InputData.Reader return false; } + if (first.AirSpeedRelativeToVehicle != null && second.AirSpeedRelativeToVehicle != null && + !first.AirSpeedRelativeToVehicle.IsEqual(second.AirSpeedRelativeToVehicle)) { + return false; + } + + if (!first.WindYawAngle.IsEqual(second.WindYawAngle)) { + return false; + } + return true; } diff --git a/VectoCore/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs b/VectoCore/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs index d4a5acc09a..908703b4a5 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/DrivingCycleTests.cs @@ -379,6 +379,62 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation TestCycleRead(cycle, type, entryCount); } + + [TestCase()] + public void DrivingCycleRead_CompressEntries_TargetSpeedOnly() + { + var cycle = "<s>,<v>,<Grad>,<STOP>\n" + + " 1, 0,0,1\n" + + " 2,50,0,0\n" + + " 5,50,0,0\n" + + "50,50,0,0\n" + + "99,50,0,0"; + var drivingCycle = DrivingCycleDataReader.ReadFromStream(cycle.ToStream(), CycleType.DistanceBased, "", false); + Assert.AreEqual(3, drivingCycle.Entries.Count); + Assert.AreEqual(1, drivingCycle.Entries[0].Distance.Value()); + Assert.AreEqual(1, drivingCycle.Entries[1].Distance.Value()); + Assert.AreEqual(99, drivingCycle.Entries[2].Distance.Value()); + } + + [TestCase()] + public void DrivingCycleRead_CompressEntries_TargetSpeedVAirBeta1() + { + var cycle = "<s>,<v>,<Grad>,<STOP>,vair_res,vair_beta\n" + + " 1, 0,0,1,30,10\n" + + " 2,50,0,0,30,10\n" + + " 5,50,0,0,30,15\n" + + "50,50,0,0,30,10\n" + + "99,50,0,0,30,15"; + var drivingCycle = DrivingCycleDataReader.ReadFromStream(cycle.ToStream(), CycleType.DistanceBased, "", true); + Assert.AreEqual(5, drivingCycle.Entries.Count); + + Assert.AreEqual(1, drivingCycle.Entries[0].Distance.Value()); + Assert.AreEqual(1, drivingCycle.Entries[1].Distance.Value()); + Assert.AreEqual(5, drivingCycle.Entries[2].Distance.Value()); + Assert.AreEqual(50, drivingCycle.Entries[3].Distance.Value()); + Assert.AreEqual(99, drivingCycle.Entries[4].Distance.Value()); + } + + [TestCase()] + public void DrivingCycleRead_CompressEntries_TargetSpeedVAirBeta2() + { + var cycle = "<s>,<v>,<Grad>,<STOP>,vair_res,vair_beta\n" + + " 1, 0,0,1,30,10\n" + + " 2,50,0,0,30,10\n" + + " 5,50,0,0,35,10\n" + + "50,50,0,0,30,10\n" + + "99,50,0,0,33,10"; + var drivingCycle = DrivingCycleDataReader.ReadFromStream(cycle.ToStream(), CycleType.DistanceBased, "", true); + Assert.AreEqual(5, drivingCycle.Entries.Count); + + Assert.AreEqual(1, drivingCycle.Entries[0].Distance.Value()); + Assert.AreEqual(1, drivingCycle.Entries[1].Distance.Value()); + Assert.AreEqual(5, drivingCycle.Entries[2].Distance.Value()); + Assert.AreEqual(50, drivingCycle.Entries[3].Distance.Value()); + Assert.AreEqual(99, drivingCycle.Entries[4].Distance.Value()); + } + + private static void TestCycleDetect(string inputData, CycleType cycleType) { var cycleTypeCalc = DrivingCycleDataReader.DetectCycleType(VectoCSVFile.ReadStream(inputData.ToStream())); -- GitLab