From e185811595431ce6fba37080c3878622659f9276 Mon Sep 17 00:00:00 2001 From: "VKMTHD\\haraldmartini" <harald.martini@student.tugraz.at> Date: Fri, 10 Mar 2023 10:25:39 +0100 Subject: [PATCH] throw exception ic socRange exceeds 1 --- .../VectoCore/Models/Declaration/InitEquivalenceFactors.cs | 7 ++++++- .../Models/Declaration/HevStrategyParametersTest.cs | 6 ++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/VectoCore/VectoCore/Models/Declaration/InitEquivalenceFactors.cs b/VectoCore/VectoCore/Models/Declaration/InitEquivalenceFactors.cs index 124c835c2e..1da0ffdfd1 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 d81befbedb..3cfa77103f 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); -- GitLab