diff --git a/VectoCore/VectoCore/Models/Declaration/InitEquivalenceFactors.cs b/VectoCore/VectoCore/Models/Declaration/InitEquivalenceFactors.cs index 124c835c2e09fdb03dbf1205000e4b0500d81a80..1da0ffdfd1e3f22f616aad055fc48940230187c7 100644 --- a/VectoCore/VectoCore/Models/Declaration/InitEquivalenceFactors.cs +++ b/VectoCore/VectoCore/Models/Declaration/InitEquivalenceFactors.cs @@ -50,7 +50,12 @@ namespace TUGraz.VectoCore.Models.Declaration public double LookupEquivalenceFactor(MissionType mission, VehicleClass hdvClass, LoadingType loading, double socRange) { - var a = _socRanges.MinBy((i => Math.Abs(socRange * 100 - i))); //closest + if (socRange > 1 || socRange < 0) { + throw new ArgumentException($"{nameof(socRange)} must be between 0 and 1 "); + } + + socRange *= 100; //Percent from here on + var a = _socRanges.MinBy((i => Math.Abs(socRange - i))); //closest if (socRange <= _socRanges.Min() || socRange >= _socRanges.Max()) { return _initEquivalenceFactors[a].LookupEquivalenceFactor(mission, hdvClass, loading); diff --git a/VectoCore/VectoCoreTest/Models/Declaration/HevStrategyParametersTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/HevStrategyParametersTest.cs index d81befbedb15ce1cf021a7e362692802f95788d2..3cfa77103f61feb1de7116328e62b0c57949b4a4 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/HevStrategyParametersTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/HevStrategyParametersTest.cs @@ -52,6 +52,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration 40.0)] double socRange) { + socRange /= 100; Assert.DoesNotThrow(() => DeclarationData.HEVStrategyParameters.LookupEquivalenceFactor(missionType, vehClass, loadingType, socRange)); } @@ -84,8 +85,9 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration //[TestCase(MissionType.LongHaul, VehicleClass.Class2, LoadingType.ReferenceLoad, 0.10, 10)] - public void TestHevStrategyLookup(MissionType missionType, VehicleClass vehicleClass, LoadingType loadingType, double expected, int socRange) + public void TestHevStrategyLookup(MissionType missionType, VehicleClass vehicleClass, LoadingType loadingType, double expected, double socRange) { + socRange /= 100; LookupEquivAndAssert(missionType, vehicleClass, loadingType, expected,socRange); } @@ -96,7 +98,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration LookupSlopeAndAssert(missionType, vehicleClass, loadingType, expected); } - private void LookupEquivAndAssert(MissionType mission, VehicleClass hdvClass, LoadingType loading, double expected, int socRange) + private void LookupEquivAndAssert(MissionType mission, VehicleClass hdvClass, LoadingType loading, double expected, double socRange) { var feq = DeclarationData.HEVStrategyParameters.LookupEquivalenceFactor(mission, hdvClass, loading, socRange);