From af75dc0afd79cd34dbd1831bc7dbe0c1a7e84bdf Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Fri, 1 Sep 2017 08:12:16 +0200
Subject: [PATCH] adding testcases for creating powertrain in declaration mode

---
 .../VectoCommon/Models/RetarderType.cs        | 164 +++++++++---------
 .../DeclarationSimulationFactoryTest.cs       |  53 ++++++
 VectoCore/VectoCoreTest/VectoCoreTest.csproj  |   1 +
 3 files changed, 136 insertions(+), 82 deletions(-)
 create mode 100644 VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs

diff --git a/VectoCommon/VectoCommon/Models/RetarderType.cs b/VectoCommon/VectoCommon/Models/RetarderType.cs
index 4fa16e3926..be41941035 100644
--- a/VectoCommon/VectoCommon/Models/RetarderType.cs
+++ b/VectoCommon/VectoCommon/Models/RetarderType.cs
@@ -29,85 +29,85 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
-using System;
-using TUGraz.VectoCommon.Utils;
-
-namespace TUGraz.VectoCommon.Models
-{
-	public enum RetarderType
-	{
-		None,
-		TransmissionInputRetarder,
-		TransmissionOutputRetarder,
-		EngineRetarder,
-		LossesIncludedInTransmission
-	}
-
-	public static class RetarderTypeHelper
-	{
-		public static RetarderType Parse(string retarderType)
-		{
-			switch (retarderType.ToLowerInvariant()) {
-				case "primary":
-					return RetarderType.TransmissionInputRetarder;
-				case "secondary":
-					return RetarderType.TransmissionOutputRetarder;
-				default:
-					return retarderType.ParseEnum<RetarderType>();
-			}
-		}
-
-		public static string GetName(this RetarderType retarder)
-		{
-			switch (retarder) {
-				case RetarderType.TransmissionInputRetarder:
-					return "primary";
-				case RetarderType.TransmissionOutputRetarder:
-					return "secondary";
-				default:
-					return retarder.ToString();
-			}
-		}
-
-		public static string GetLabel(this RetarderType retarder)
-		{
-			switch (retarder) {
-				case RetarderType.None:
-					return "None";
-				case RetarderType.TransmissionInputRetarder:
-					return "Primary Retarder";
-				case RetarderType.TransmissionOutputRetarder:
-					return "Secondary Retarder";
-				case RetarderType.EngineRetarder:
-					return "Engine Retarder";
-				case RetarderType.LossesIncludedInTransmission:
-					return "Included in Transmission Loss Maps";
-				default:
-					throw new ArgumentOutOfRangeException("RetarderType", retarder, null);
-			}
-		}
-
-		public static string ToXMLFormat(this RetarderType type)
-		{
-			switch (type) {
-				case RetarderType.None:
-					return "None";
-				case RetarderType.TransmissionInputRetarder:
-					return "Transmission Input Retarder";
-				case RetarderType.TransmissionOutputRetarder:
-					return "Transmission Output Retarder";
-				case RetarderType.EngineRetarder:
-					return "Engine Retarder";
-				case RetarderType.LossesIncludedInTransmission:
-					return "Losses included in Gearbox";
-				default:
-					throw new ArgumentOutOfRangeException("RetarderType", type, null);
-			}
-		}
-
-		public static bool IsDedicatedComponent(this RetarderType retarder)
-		{
-			return retarder == RetarderType.TransmissionInputRetarder || retarder == RetarderType.TransmissionOutputRetarder;
-		}
-	}
-}
\ No newline at end of file
+using System;
+using TUGraz.VectoCommon.Utils;
+
+namespace TUGraz.VectoCommon.Models
+{
+	public enum RetarderType
+	{
+		None,
+		TransmissionInputRetarder,
+		TransmissionOutputRetarder,
+		EngineRetarder,
+		LossesIncludedInTransmission
+	}
+
+	public static class RetarderTypeHelper
+	{
+		public static RetarderType Parse(string retarderType)
+		{
+			switch (retarderType.ToLowerInvariant()) {
+				case "primary":
+					return RetarderType.TransmissionInputRetarder;
+				case "secondary":
+					return RetarderType.TransmissionOutputRetarder;
+				default:
+					return retarderType.ParseEnum<RetarderType>();
+			}
+		}
+
+		public static string GetName(this RetarderType retarder)
+		{
+			switch (retarder) {
+				case RetarderType.TransmissionInputRetarder:
+					return "primary";
+				case RetarderType.TransmissionOutputRetarder:
+					return "secondary";
+				default:
+					return retarder.ToString();
+			}
+		}
+
+		public static string GetLabel(this RetarderType retarder)
+		{
+			switch (retarder) {
+				case RetarderType.None:
+					return "None";
+				case RetarderType.TransmissionInputRetarder:
+					return "Primary Retarder";
+				case RetarderType.TransmissionOutputRetarder:
+					return "Secondary Retarder";
+				case RetarderType.EngineRetarder:
+					return "Engine Retarder";
+				case RetarderType.LossesIncludedInTransmission:
+					return "Included in Transmission Loss Maps";
+				default:
+					throw new ArgumentOutOfRangeException("RetarderType", retarder, null);
+			}
+		}
+
+		public static string ToXMLFormat(this RetarderType type)
+		{
+			switch (type) {
+				case RetarderType.None:
+					return "None";
+				case RetarderType.TransmissionInputRetarder:
+					return "Transmission Input Retarder";
+				case RetarderType.TransmissionOutputRetarder:
+					return "Transmission Output Retarder";
+				case RetarderType.EngineRetarder:
+					return "Engine Retarder";
+				case RetarderType.LossesIncludedInTransmission:
+					return "Losses included in Gearbox";
+				default:
+					throw new ArgumentOutOfRangeException("RetarderType", type, null);
+			}
+		}
+
+		public static bool IsDedicatedComponent(this RetarderType retarder)
+		{
+			return retarder == RetarderType.TransmissionInputRetarder || retarder == RetarderType.TransmissionOutputRetarder;
+		}
+	}
+}
diff --git a/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs
new file mode 100644
index 0000000000..7c5a874bc5
--- /dev/null
+++ b/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs
@@ -0,0 +1,53 @@
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Xml;
+using NUnit.Framework;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCore.Configuration;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
+using TUGraz.VectoCore.Models.Simulation.Impl;
+using TUGraz.VectoCore.Utils;
+using Assert = Microsoft.VisualStudio.TestTools.UnitTesting.Assert;
+
+namespace TUGraz.VectoCore.Tests.Models.Simulation
+{
+	[TestFixture]
+	public class DeclarationSimulationFactoryTest
+	{
+		const string SampleVehicleDecl = "TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample.xml";
+
+		[TestCase("None", RetarderType.None),
+		TestCase("Losses included in Gearbox", RetarderType.LossesIncludedInTransmission),
+		TestCase("Engine Retarder", RetarderType.EngineRetarder),
+		TestCase("Transmission Input Retarder", RetarderType.TransmissionInputRetarder),
+		TestCase("Transmission Output Retarder", RetarderType.TransmissionOutputRetarder)]
+		public void TestRetarderTypes(string xmlValue, RetarderType retarderType)
+		{
+			var reader = XmlReader.Create(SampleVehicleDecl);
+
+			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 xmlRetarderType = nav.SelectSingleNode(helper.QueryAbs(
+				helper.NSPrefix(XMLNames.VectoInputDeclaration, Constants.XML.RootNSPrefix),
+				XMLNames.Component_Vehicle,
+				XMLNames.Vehicle_RetarderType), manager);
+			xmlRetarderType.SetValue(xmlValue);
+
+			var modified = XmlReader.Create(new StringReader(nav.OuterXml));
+
+			var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true);
+
+			var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null) {Validate = false};
+
+			var runs = factory.SimulationRuns().ToArray();
+			Assert.AreEqual(8, runs.Length);
+		}
+	}
+}
diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
index 137e8472b0..d27b8e6b1b 100644
--- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
@@ -109,6 +109,7 @@
     <Compile Include="Models\Simulation\GearboxInertiaTest.cs" />
     <Compile Include="Models\Simulation\MockSumWriter.cs" />
     <Compile Include="Models\Simulation\GetSectionTest.cs" />
+    <Compile Include="Models\Simulation\DeclarationSimulationFactoryTest.cs" />
     <Compile Include="Reports\ActualModalSimulationDataTest.cs" />
     <Compile Include="Reports\ModDataTest.cs" />
     <Compile Include="Models\Simulation\MeasuredSpeedModeTest.cs" />
-- 
GitLab