diff --git a/VectoCore/VectoCoreTest/Models/Declaration/ShiftPolygonTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/ShiftPolygonTest.cs index 1686fe09d4467ae9610160df0941d4196950dcce..90551dc1bfec8b938895417f5447402afb90dc50 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/ShiftPolygonTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/ShiftPolygonTest.cs @@ -74,9 +74,9 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration new Point(20, 20), }; - var result = DeclarationData.Gearbox.IntersectShiftPolygon(upShift, transformed); + var result = DeclarationData.Gearbox.IntersectTakeHigherShiftLine(upShift, transformed); - Assert.AreEqual(expected.Length, result.Count); + Assert.AreEqual(expected.Length, result.Length); foreach (var tuple in expected.Zip(result, Tuple.Create)) { Assert.AreEqual(tuple.Item1.X, tuple.Item2.X); @@ -105,18 +105,18 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration new Point(20, 15.6), }; - var result = DeclarationData.Gearbox.IntersectShiftPolygon(upShift, transformed); + var result = DeclarationData.Gearbox.IntersectTakeHigherShiftLine(upShift, transformed); - Assert.AreEqual(expected.Length, result.Count); + Assert.AreEqual(expected.Length, result.Length); foreach (var tuple in expected.Zip(result, Tuple.Create)) { Assert.AreEqual(tuple.Item1.X, tuple.Item2.X); Assert.AreEqual(tuple.Item1.Y, tuple.Item2.Y); } - result = DeclarationData.Gearbox.IntersectShiftPolygon(transformed, upShift); + result = DeclarationData.Gearbox.IntersectTakeHigherShiftLine(transformed, upShift); - Assert.AreEqual(expected.Length, result.Count); + Assert.AreEqual(expected.Length, result.Length); foreach (var tuple in expected.Zip(result, Tuple.Create)) { Assert.AreEqual(tuple.Item1.X, tuple.Item2.X); @@ -146,18 +146,18 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration new Point(20, 20), }; - var result = DeclarationData.Gearbox.IntersectShiftPolygon(upShift, transformed); + var result = DeclarationData.Gearbox.IntersectTakeHigherShiftLine(upShift, transformed); - Assert.AreEqual(expected.Length, result.Count); + Assert.AreEqual(expected.Length, result.Length); foreach (var tuple in expected.Zip(result, Tuple.Create)) { Assert.AreEqual(tuple.Item1.X, tuple.Item2.X); Assert.AreEqual(tuple.Item1.Y, tuple.Item2.Y); } - result = DeclarationData.Gearbox.IntersectShiftPolygon(transformed, upShift); + result = DeclarationData.Gearbox.IntersectTakeHigherShiftLine(transformed, upShift); - Assert.AreEqual(expected.Length, result.Count); + Assert.AreEqual(expected.Length, result.Length); foreach (var tuple in expected.Zip(result, Tuple.Create)) { Assert.AreEqual(tuple.Item1.X, tuple.Item2.X); @@ -187,18 +187,108 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration new Point(20, 16.8), }; - var result = DeclarationData.Gearbox.IntersectShiftPolygon(upShift, transformed); + var result = DeclarationData.Gearbox.IntersectTakeHigherShiftLine(upShift, transformed); - Assert.AreEqual(expected.Length, result.Count); + Assert.AreEqual(expected.Length, result.Length); foreach (var tuple in expected.Zip(result, Tuple.Create)) { Assert.AreEqual(tuple.Item1.X, tuple.Item2.X, 1e-3); Assert.AreEqual(tuple.Item1.Y, tuple.Item2.Y, 1e-3); } - result = DeclarationData.Gearbox.IntersectShiftPolygon(transformed, upShift); + result = DeclarationData.Gearbox.IntersectTakeHigherShiftLine(transformed, upShift); - Assert.AreEqual(expected.Length, result.Count); + Assert.AreEqual(expected.Length, result.Length); + + foreach (var tuple in expected.Zip(result, Tuple.Create)) { + Assert.AreEqual(tuple.Item1.X, tuple.Item2.X, 1e-3); + Assert.AreEqual(tuple.Item1.Y, tuple.Item2.Y, 1e-3); + } + } + + [TestCase] + public void LimitShiftlines1() + { + var upShift = new[] { + new Point(10, 0), + new Point(10, 10), + new Point(20, 20), + }; + + var limit = new[] { + new Point(8, 0), + new Point(8, 20) + }; + + var expected = new[] { + new Point(8, 0), + new Point(8, 20) + }; + + var result = DeclarationData.Gearbox.IntersectTakeLowerShiftLine(upShift, limit); + + Assert.AreEqual(expected.Length, result.Length); + + foreach (var tuple in expected.Zip(result, Tuple.Create)) { + Assert.AreEqual(tuple.Item1.X, tuple.Item2.X, 1e-3); + Assert.AreEqual(tuple.Item1.Y, tuple.Item2.Y, 1e-3); + } + } + + [TestCase] + public void LimitShiftlines2() + { + var upShift = new[] { + new Point(10, 0), + new Point(10, 10), + new Point(20, 20), + }; + + var limit = new[] { + new Point(15, 0), + new Point(15, 20) + }; + + var expected = new[] { + new Point(10, 0), + new Point(10, 10), + new Point(15, 15), + new Point(15, 20), + }; + + var result = DeclarationData.Gearbox.IntersectTakeLowerShiftLine(upShift, limit); + + Assert.AreEqual(expected.Length, result.Length); + + foreach (var tuple in expected.Zip(result, Tuple.Create)) { + Assert.AreEqual(tuple.Item1.X, tuple.Item2.X, 1e-3); + Assert.AreEqual(tuple.Item1.Y, tuple.Item2.Y, 1e-3); + } + } + + [TestCase] + public void LimitShiftlines3() + { + var upShift = new[] { + new Point(10, 0), + new Point(10, 10), + new Point(20, 20), + }; + + var limit = new[] { + new Point(25, 0), + new Point(25, 20) + }; + + var expected = new[] { + new Point(10, 0), + new Point(10, 10), + new Point(20, 20), + }; + + var result = DeclarationData.Gearbox.IntersectTakeLowerShiftLine(upShift, limit); + + Assert.AreEqual(expected.Length, result.Length); foreach (var tuple in expected.Zip(result, Tuple.Create)) { Assert.AreEqual(tuple.Item1.X, tuple.Item2.X, 1e-3); @@ -546,7 +636,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration shiftPolygons.Add( DeclarationData.Gearbox.ComputeShiftPolygon(gearboxData.Type, i, fullLoadCurves[(uint)(i + 1)], gearboxData.Gears, engineData, axlegearRatio, rdyn.SI<Meter>()) - ); + ); List<Point> tmp1, tmp2, tmp3; ComputShiftPolygonPoints(i, fullLoadCurves[(uint)(i + 1)], gearboxData.Gears, engineData, axlegearRatio, rdyn.SI<Meter>(), out tmp1, out tmp2, out tmp3); @@ -669,7 +759,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration var segment = Tuple.Create( new ShiftPolygon.ShiftPolygonEntry(550.SI<NewtonMeter>(), 685.RPMtoRad()), new ShiftPolygon.ShiftPolygonEntry(1200.SI<NewtonMeter>(), 1080.RPMtoRad()) - ); + ); Assert.AreEqual(result, ShiftPolygon.IsLeftOf(speed.RPMtoRad(), torque.SI<NewtonMeter>(), segment)); } diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/GearboxShiftLossesTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/GearboxShiftLossesTest.cs index 1998a142a4104387dc3f78e2564199f5c3727c0e..ba504b73891449e08b2ac9a8a79f6591e0b1f0f8 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/GearboxShiftLossesTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/GearboxShiftLossesTest.cs @@ -93,6 +93,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var wheels = new Wheels(container, 0.5.SI<Meter>(), 9.5.SI<KilogramSquareMeter>()); var vehicle = new MockVehicle(container); + container.AbsTime = 100.SI<Second>(); var driver = new MockDriver(container); vehicle.MyVehicleSpeed = 10.KMPHtoMeterPerSecond(); driver.DriverBehavior = DrivingBehavior.Driving;