From 502aa5e7896229e7e0ebd93456cfc0071b467522 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Thu, 8 Nov 2018 08:56:06 +0100
Subject: [PATCH] adding testcase to read vehicle category 'rigid lorry', adapt
 declaration xml reader

---
 .../VectoCommon/Models/VehicleCategory.cs     |  2 +-
 .../XMLDeclarationVehicleDataProvider.cs      |  6 +++-
 .../XML/XMLDeclarationInputTest.cs            | 30 +++++++++++++++++++
 3 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/VectoCommon/VectoCommon/Models/VehicleCategory.cs b/VectoCommon/VectoCommon/Models/VehicleCategory.cs
index 8c59130ffc..ed7c6b96dd 100644
--- a/VectoCommon/VectoCommon/Models/VehicleCategory.cs
+++ b/VectoCommon/VectoCommon/Models/VehicleCategory.cs
@@ -91,7 +91,7 @@ namespace TUGraz.VectoCommon.Models
 				case VehicleCategory.InterurbanBus:
 					return "Interurban Bus";
 				case VehicleCategory.RigidTruck:
-					return "Rigid Truck";
+					return "Rigid Lorry";
 				default:
 					throw new ArgumentOutOfRangeException("vehicleCategory", vehicleCategory, null);
 			}
diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs
index e22ffbb70b..2e0e317e28 100644
--- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs
+++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/XMLDeclarationVehicleDataProvider.cs
@@ -79,7 +79,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
 
 		public VehicleCategory VehicleCategory
 		{
-			get { return GetElementValue(XMLNames.Vehicle_VehicleCategory).ParseEnum<VehicleCategory>(); }
+			get { var val = GetElementValue(XMLNames.Vehicle_VehicleCategory);
+				if ("Rigid Lorry".Equals(val, StringComparison.InvariantCultureIgnoreCase)) {
+					return VehicleCategory.RigidTruck;
+				}
+				return val.ParseEnum<VehicleCategory>(); }
 		}
 
 		public Kilogram CurbMassChassis
diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
index f88d796495..aadd422acf 100644
--- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
+++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs
@@ -629,6 +629,9 @@ namespace TUGraz.VectoCore.Tests.XML
 			var vehicleCategories = GetEnumOptions("VehicleCategoryDeclarationType", "1.0");
 			var allowedCategories = DeclarationData.Segments.GetVehicleCategories();
 			foreach (var vehicleCategory in vehicleCategories) {
+				if (vehicleCategory.Equals("Rigid Truck")) {
+					continue; // Rigid Truck has been renamed to Rigid Lorry. The XML contains this entry for backward compatibility (separate testcase)
+				}
 				var reader = XmlReader.Create(SampleVehicleDecl);
 
 				var doc = new XmlDocument();
@@ -984,6 +987,33 @@ namespace TUGraz.VectoCore.Tests.XML
 			Assert.AreEqual(PredictiveCruiseControlType.None, adas.PredictiveCruiseControl);
 		}
 
+		[TestCase(SampleVehicleFullDeclUpdated)]
+		public void TestRigidTruckIsReadAsRigidLorry(string file)
+		{
+			var reader = XmlReader.Create(file);
+
+			var doc = new XmlDocument();
+			doc.Load(reader);
+			var nav = doc.CreateNavigator();
+			var manager = new XmlNamespaceManager(nav.NameTable);
+			var helper = new XPathHelper(ExecutionMode.Declaration);
+			helper.AddNamespaces(manager);
+
+			var vehicleCategoryNode = nav.SelectSingleNode(helper.QueryAbs(
+															helper.NSPrefix(XMLNames.VectoInputDeclaration, Constants.XML.RootNSPrefix),
+															XMLNames.Component_Vehicle,
+															XMLNames.Vehicle_VehicleCategory), manager);
+			vehicleCategoryNode.SetValue("Rigid Truck");
+
+			var modified = XmlReader.Create(new StringReader(nav.OuterXml));
+
+			var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true);
+
+			var vehCategory = inputDataProvider.JobInputData.Vehicle.VehicleCategory;
+
+			Assert.AreEqual(VehicleCategory.RigidTruck, vehCategory);
+		}
+
 		public static string[] GetEnumOptions(string xmlType, string schemaVersion)
 		{
 			Stream resource;
-- 
GitLab