From 55a66919170f501d4d952b2403af4887ff2cf988 Mon Sep 17 00:00:00 2001
From: "VKMTHD\\haraldmartini" <harald.martini@student.tugraz.at>
Date: Thu, 1 Sep 2022 15:42:29 +0200
Subject: [PATCH] added RunDataFactoryFactoryTest

---
 .../RunDataFactoryFactoryTest.cs              | 153 ++++++++++++++++++
 VectoCore/VectoCoreTest/VectoCoreTest.csproj  |   1 +
 2 files changed, 154 insertions(+)
 create mode 100644 VectoCore/VectoCoreTest/InputData/RunDataFactory/RunDataFactoryFactoryTest.cs

diff --git a/VectoCore/VectoCoreTest/InputData/RunDataFactory/RunDataFactoryFactoryTest.cs b/VectoCore/VectoCoreTest/InputData/RunDataFactory/RunDataFactoryFactoryTest.cs
new file mode 100644
index 0000000000..2f45df2608
--- /dev/null
+++ b/VectoCore/VectoCoreTest/InputData/RunDataFactory/RunDataFactoryFactoryTest.cs
@@ -0,0 +1,153 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Moq;
+using Ninject;
+using NUnit.Framework;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCore.InputData;
+using TUGraz.VectoCore.InputData.Reader;
+using TUGraz.VectoCore.InputData.Reader.Impl;
+
+namespace TUGraz.VectoCore.Tests.InputData.RunDataFactory
+{
+    [TestFixture]
+    internal class RunDataFactoryFactoryTest
+	{
+		private IVectoRunDataFactoryFactory _runDataFactoryFactory;
+		
+
+
+		[OneTimeSetUp]
+		public void OneTimeSetup()
+		{
+			var kernel = new StandardKernel(new VectoNinjectModule()) {
+
+			};
+			_runDataFactoryFactory = kernel.Get<IVectoRunDataFactoryFactory>();
+			Assert.IsTrue(_runDataFactoryFactory.GetType() == typeof(VectoRunDataFactoryFactory));
+		}
+
+		private void CreateRunDataFactory(Mock<IDeclarationInputDataProvider> inputMock, Type expectedType)
+		{
+			var result = _runDataFactoryFactory.CreateDeclarationRunDataFactory(inputMock.Object, null,
+				null);
+			Assert.IsTrue(result.GetType() == expectedType);
+		}
+
+		[TestCase()]
+		public void ConventionalHeavyLorryTest()
+		{
+			var input = new Mock<IDeclarationInputDataProvider>()
+				.Conventional()
+				.Lorry();
+
+			CreateRunDataFactory(input, typeof(DeclarationModeHeavyLorryRunDataFactory.Conventional));
+			
+		}
+		[TestCase()]
+		public void HEV_S2_HeavyLorryTest()
+		{
+			var input = new Mock<IDeclarationInputDataProvider>()
+				.HEV(ArchitectureID.S2)
+				.Lorry();
+			CreateRunDataFactory(input, typeof(DeclarationModeHeavyLorryRunDataFactory.HEV_S2));
+		}
+
+		[TestCase()]
+		public void HEV_S3_HeavyLorryTest()
+		{
+			var input = new Mock<IDeclarationInputDataProvider>()
+				.HEV(ArchitectureID.S3)
+				.Lorry();
+			CreateRunDataFactory(input, typeof(DeclarationModeHeavyLorryRunDataFactory.HEV_S3));
+		}
+
+		[TestCase()]
+		public void HEV_S4_HeavyLorryTest()
+		{
+			var input = new Mock<IDeclarationInputDataProvider>()
+				.HEV(ArchitectureID.S4)
+				.Lorry();
+			CreateRunDataFactory(input, typeof(DeclarationModeHeavyLorryRunDataFactory.HEV_S4));
+		}
+
+		[TestCase()]
+		public void HEV_P1_HeavyLorryTest()
+		{
+			var input = new Mock<IDeclarationInputDataProvider>()
+				.HEV(ArchitectureID.P1)
+				.Lorry();
+			CreateRunDataFactory(input, typeof(DeclarationModeHeavyLorryRunDataFactory.HEV_P1));
+		}
+		[TestCase()]
+		public void HEV_P2_HeavyLorryTest()
+		{
+			var input = new Mock<IDeclarationInputDataProvider>()
+				.HEV(ArchitectureID.P2)
+				.Lorry();
+			CreateRunDataFactory(input, typeof(DeclarationModeHeavyLorryRunDataFactory.HEV_P2));
+		}
+
+		[TestCase()]
+		public void HEV_P2_5_HeavyLorryTest()
+		{
+			var input = new Mock<IDeclarationInputDataProvider>()
+				.HEV(ArchitectureID.P2_5)
+				.Lorry();
+			CreateRunDataFactory(input, typeof(DeclarationModeHeavyLorryRunDataFactory.HEV_P2_5));
+		}
+
+		[TestCase()]
+		public void HEV_P3_HeavyLorryTest()
+		{
+			var input = new Mock<IDeclarationInputDataProvider>()
+				.HEV(ArchitectureID.P3)
+				.Lorry();
+			CreateRunDataFactory(input, typeof(DeclarationModeHeavyLorryRunDataFactory.HEV_P3));
+		}
+		[TestCase()]
+		public void HEV_P4_HeavyLorryTest()
+		{
+			var input = new Mock<IDeclarationInputDataProvider>()
+				.HEV(ArchitectureID.P4)
+				.Lorry();
+			CreateRunDataFactory(input, typeof(DeclarationModeHeavyLorryRunDataFactory.HEV_P4));
+		}
+
+	}
+
+	internal static class InputDataProviderMockExtension
+	{
+		internal static Mock<IDeclarationInputDataProvider> Conventional(this Mock<IDeclarationInputDataProvider> mock)
+		{
+			mock.Setup(provider => provider.JobInputData.JobType)
+				.Returns(VectoSimulationJobType.ConventionalVehicle);
+			mock.Setup(p => p.JobInputData.Vehicle.ArchitectureID).Returns(ArchitectureID.UNKNOWN);
+			
+			return mock;
+		}
+
+		internal static Mock<IDeclarationInputDataProvider> HEV(this Mock<IDeclarationInputDataProvider> mock, ArchitectureID arch)
+		{
+
+
+			mock.Setup(p => p.JobInputData.Vehicle.ArchitectureID).Returns(arch);
+			mock.Setup(p => p.JobInputData.JobType).Returns(arch.ToString().StartsWith("P")
+				? VectoSimulationJobType.ParallelHybridVehicle
+				: VectoSimulationJobType.SerialHybridVehicle);
+			return mock;
+		}
+		internal static Mock<IDeclarationInputDataProvider> Lorry(this Mock<IDeclarationInputDataProvider> mock)
+		{
+			mock.Setup(provider => provider.JobInputData.Vehicle.VehicleCategory)
+				.Returns(VehicleCategory.RigidTruck);
+			return mock;
+		}
+
+	}
+
+}
diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
index 46de90a322..4b051af090 100644
--- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
@@ -13,6 +13,7 @@
 		<DefineConstants>$(DefineConstants);MOCKUP</DefineConstants>
 	</PropertyGroup>
   <ItemGroup>
+    <PackageReference Include="Moq" Version="4.18.2" />
     <PackageReference Include="NUnit" Version="3.13.2" />
     <PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
-- 
GitLab