diff --git a/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs b/VectoCore/VectoCore/InputData/Reader/DrivingCycleDataReader.cs index 49162f70202fa017050312677cb9668aba050efe..d76d3222b802eabe037fafcda5df0f5730772c95 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 d4a5acc09a4ac6b49ea5e95fc90f1743dcd32625..908703b4a5b63c7071ee99e510696ed1137bca36 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()));