From 0b175576a306c5fb4d912f5ece9e66e837a5518a Mon Sep 17 00:00:00 2001
From: "VKMTHD\\haraldmartini" <harald.martini@student.tugraz.at>
Date: Tue, 7 Feb 2023 16:57:49 +0100
Subject: [PATCH] added vehicle operation testcase that covers all possible
 groups and missions

---
 .../Models/Declaration/DeclarationDataTest.cs | 40 +++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
index 7c64426890..449bd50c47 100644
--- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
+++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs
@@ -31,6 +31,9 @@
 
 using NUnit.Framework;
 using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Data;
 using System.IO;
 using System.Linq;
 using System.Xml;
@@ -48,6 +51,7 @@ using TUGraz.VectoCore.InputData.Reader.Impl.DeclarationMode.HeavyLorryRunDataFa
 using TUGraz.VectoCore.Models.Declaration;
 using TUGraz.VectoCore.Models.SimulationComponent.Data;
 using TUGraz.VectoCore.Tests.Utils;
+using TUGraz.VectoCore.Utils;
 
 namespace TUGraz.VectoCore.Tests.Models.Declaration
 {
@@ -2451,6 +2455,42 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
 			Assert.AreEqual(expectedDaily * 1000, val.Mileage.DailyMileage.Value()); //stored in meter
 		}
 
+        [TestCaseSource(nameof(VehicleOperationTestSource))]
+		public void VehicleOperationLookupMileage(VehicleClass hdvClass, MissionType mission)
+		{
+			var val = DeclarationData.VehicleOperation.LookupVehicleOperation(hdvClass, mission);
+        }
+
+
+		public static IEnumerable<object[]> VehicleOperationTestSource()
+		{
+			VehicleClass hdvClass;
+
+			var missions = EnumHelper.GetValues<MissionType>();
+
+			var segmentTable = VectoCSVFile.ReadStream(RessourceHelper.ReadStream(DeclarationData.DeclarationDataResourcePrefix + ".SegmentTable.csv"));
+			var hdvMissionDict = new Dictionary<VehicleClass, HashSet<MissionType>>();
+
+			foreach (DataRow row in segmentTable.Rows) {
+				var hdvGroup = VehicleClassHelper.Parse(row["HDV group"].ToString());
+				hdvMissionDict.TryAdd(hdvGroup, new HashSet<MissionType>());
+				foreach (var missionType in missions.Where(
+							m => m.IsDeclarationMission() && m != MissionType.ExemptedMission &&
+								row.Field<string>(m.GetLabel()) != "-")) {
+					hdvMissionDict[hdvGroup].Add(missionType);
+				}
+			}
+
+			foreach (var hdvCl in 
+					hdvMissionDict
+						.Where(kv => kv.Value.Count > 0)
+						.OrderBy(kv => kv.Key)) {
+				foreach (var mission in hdvCl.Value) {
+					yield return new object[]{hdvCl.Key, mission};
+				}
+			}
+		}
+
 
         [TestCase(VehicleClass.Class53, MissionType.LongHaul)]
 		[TestCase(VehicleClass.Class16, MissionType.UrbanDelivery)]
-- 
GitLab