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