From 580fab80350bd2d5499abcf84710a4893c092a84 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Mon, 26 Mar 2018 14:50:06 +0200
Subject: [PATCH] adding testcase for influence of engine correction factors

---
 .../Declaration/EngineInputDataTests.cs       | 69 +++++++++++++++++++
 .../CombustionEngineTest.cs                   | 20 +++---
 VectoCore/VectoCoreTest/VectoCoreTest.csproj  |  1 +
 3 files changed, 82 insertions(+), 8 deletions(-)
 create mode 100644 VectoCore/VectoCoreTest/Integration/Declaration/EngineInputDataTests.cs

diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/EngineInputDataTests.cs b/VectoCore/VectoCoreTest/Integration/Declaration/EngineInputDataTests.cs
new file mode 100644
index 0000000000..f20843f544
--- /dev/null
+++ b/VectoCore/VectoCoreTest/Integration/Declaration/EngineInputDataTests.cs
@@ -0,0 +1,69 @@
+using System.Data;
+using System.IO;
+using System.Linq;
+using System.Xml;
+using NUnit.Framework;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Resources;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.Configuration;
+using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
+using TUGraz.VectoCore.InputData.Reader.ComponentData;
+using TUGraz.VectoCore.Models.Simulation.Data;
+using TUGraz.VectoCore.Models.Simulation.Impl;
+using TUGraz.VectoCore.OutputData;
+using TUGraz.VectoCore.Utils;
+
+namespace TUGraz.VectoCore.Tests.Integration.Declaration
+{
+	[TestFixture]
+	public class EngineInputDataTests
+	{
+		const string SampleVehicleDecl = "TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample.xml";
+
+		[OneTimeSetUp]
+		public void RunBeforeAnyTests()
+		{
+			Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
+		}
+
+		[TestCase(null, 1.0, 45.5323),
+		TestCase("CFRegPer", 1.2, 45.5323 * 1.2),
+		TestCase("BFColdHot", 1.2, 45.5323 * 1.2),
+		TestCase("CFNCV", 1.2, 45.5323)  // has no influence - only for documentation purpose
+			]
+		public void TestEngineCorrectionFactors(string correctionFactor, double value, double expectedFc)
+		{
+			var reader = XmlReader.Create(SampleVehicleDecl);
+			var modified = reader;
+			if (correctionFactor != null) {
+				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 firstAxle = nav.SelectSingleNode("//"+
+					helper.Query(
+						//helper.NSPrefix(XMLNames.VectoInputDeclaration, Constants.XML.RootNSPrefix),
+						correctionFactor
+					), manager);
+				firstAxle.InnerXml = value.ToXMLFormat(4);
+
+				 modified = XmlReader.Create(new StringReader(nav.OuterXml));
+
+			}
+			var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true);
+
+			var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null, validate: false);
+			var first = factory.SimulationRuns().First();
+
+			var modData = ((ModalDataContainer)first.GetContainer().ModalData).Data;
+			first.Run();
+
+			Assert.AreEqual(expectedFc, modData.AsEnumerable().Sum(r => r.Field<SI>((int)ModalResultField.FCFinal).Value()), 1e-3);
+
+		}
+	}
+}
diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
index 1c6eeba330..89287f4c23 100644
--- a/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
+++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
@@ -45,6 +45,9 @@ using TUGraz.VectoCore.Models.SimulationComponent.Impl;
 using TUGraz.VectoCore.Tests.Utils;
 using TUGraz.VectoCore.Utils;
 using System.IO;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCore.InputData.FileIO.JSON;
+using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter;
 
 // ReSharper disable UnusedVariable
 // ReSharper disable NotAccessedVariable
@@ -63,13 +66,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 		private const string TruckEngine = @"TestData\Components\40t_Long_Haul_Truck.veng";
 
 
-        [OneTimeSetUp]
-        public void RunBeforeAnyTests()
-        {
-            Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
-        }
+		[OneTimeSetUp]
+		public void RunBeforeAnyTests()
+		{
+			Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
+		}
 
-        [TestCase]
+		[TestCase]
 		public void TestEngineHasOutPort()
 		{
 			var vehicle = new VehicleContainer(ExecutionMode.Engineering);
@@ -525,17 +528,18 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 
 			var displace = engineData.Displacement;
 			Assert.AreEqual(0.01273, displace.Value());
-		    Assert.IsTrue(displace.HasEqualUnit(new SI(Unit.SI.Cubic.Meter)));
+			Assert.IsTrue(displace.HasEqualUnit(new SI(Unit.SI.Cubic.Meter)));
 
 			var inert = engineData.Inertia;
 			Assert.AreEqual(3.8, inert.Value(), 0.00001);
-		    Assert.IsTrue(inert.HasEqualUnit(new SI(Unit.SI.Kilo.Gramm.Square.Meter)));
+			Assert.IsTrue(inert.HasEqualUnit(new SI(Unit.SI.Kilo.Gramm.Square.Meter)));
 
 			var idle = engineData.IdleSpeed;
 			Assert.AreEqual(58.6430628670095, idle.Value(), 0.000001);
 			Assert.IsTrue(idle.HasEqualUnit(0.SI<PerSecond>()));
 		}
 
+		
 		private static void VehicleContainer(string engineFile, out VehicleContainer container, out CombustionEngine engine,
 			out ITnOutPort requestPort, out MockGearbox gearbox)
 		{
diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
index c78002d36d..ff713a6788 100644
--- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
@@ -83,6 +83,7 @@
     <Compile Include="Integration\BusAuxiliaries\AAuxTests.cs" />
     <Compile Include="Integration\CoachAdvancedAuxPowertrain.cs" />
     <Compile Include="Integration\CoachPowerTrain.cs" />
+    <Compile Include="Integration\Declaration\EngineInputDataTests.cs" />
     <Compile Include="Integration\DriverStrategy\SimpleCycles.cs" />
     <Compile Include="Integration\VTP\VTPTest.cs" />
     <Compile Include="Integration\FuelTypesTest.cs" />
-- 
GitLab