From e7f6bf9246fa51e38117addc6bc7a3e91010c218 Mon Sep 17 00:00:00 2001
From: Michael Krisper <michael.krisper@tugraz.at>
Date: Tue, 29 Mar 2022 10:26:54 +0200
Subject: [PATCH] PowertrainBuilder.GetShiftStrategy: Simplified
 sub-switch-case into one big construct

---
 .../Simulation/Impl/PowertrainBuilder.cs      | 24 ++++++-------------
 1 file changed, 7 insertions(+), 17 deletions(-)

diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
index 8098dbb906..51eb4ba46f 100644
--- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
+++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs
@@ -1242,21 +1242,16 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 			var runData = container.RunData;
 
 			switch (runData.GearboxData.Type) {
-				case GearboxType.AMT:
-					switch (runData.JobType) {
-						case VectoSimulationJobType.ConventionalVehicle:
+				case GearboxType.AMT when runData.JobType == VectoSimulationJobType.ConventionalVehicle:
 							runData.ShiftStrategy = AMTShiftStrategyOptimized.Name;
 							return new AMTShiftStrategyOptimized(container);
 
-						case VectoSimulationJobType.BatteryElectricVehicle:
-						case VectoSimulationJobType.SerialHybridVehicle:
+				case GearboxType.AMT when runData.JobType.IsOneOf(VectoSimulationJobType.BatteryElectricVehicle, VectoSimulationJobType.SerialHybridVehicle):
 							runData.ShiftStrategy = PEVAMTShiftStrategy.Name;
 							return new PEVAMTShiftStrategy(container);
-						
-						default:
+				case GearboxType.AMT:
 							throw new VectoException("no default gearshift strategy available for gearbox type {0} and job type {1}",
 								runData.GearboxData.Type, runData.JobType);
-					}
 
 				case GearboxType.MT:
 					runData.ShiftStrategy = MTShiftStrategy.Name;
@@ -1267,23 +1262,18 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
 					runData.ShiftStrategy = ATShiftStrategyOptimized.Name;
 					return new ATShiftStrategyOptimized(container);
 
-				case GearboxType.APTN:
-					switch (runData.JobType) {
-						case VectoSimulationJobType.ParallelHybridVehicle:
-						case VectoSimulationJobType.SerialHybridVehicle:
-						case VectoSimulationJobType.BatteryElectricVehicle:
+				case GearboxType.APTN when runData.JobType.IsOneOf(VectoSimulationJobType.ParallelHybridVehicle, VectoSimulationJobType.SerialHybridVehicle, VectoSimulationJobType.BatteryElectricVehicle):
 							runData.ShiftStrategy = APTNShiftStrategy.Name;
 							return new APTNShiftStrategy(container);
 
-						case VectoSimulationJobType.ConventionalVehicle when container.IsTestPowertrain:
+				case GearboxType.APTN when runData.JobType == VectoSimulationJobType.ConventionalVehicle && container.IsTestPowertrain:
 							return null;
 
-						default:
+				case GearboxType.APTN:
 							throw new ArgumentException("APT-N Gearbox is only applicable on hybrids and battery electric vehicles.");
-					}
 
 				default:
-					throw new ArgumentOutOfRangeException("GearboxType", runData.GearboxData.Type, "Unknown Gearbox Type");
+					throw new ArgumentOutOfRangeException("GearboxType", runData.GearboxData.Type, "VECTO can not automatically derive shift strategy for GearboxType.");
 			}
 		}
 
-- 
GitLab