From c3b7be4afc3fea983a7fdbd88c082ddb30fd97df Mon Sep 17 00:00:00 2001
From: "VKMTHD\\haraldmartini" <harald.martini@student.tugraz.at>
Date: Mon, 5 Dec 2022 10:43:39 +0100
Subject: [PATCH] added AuxiliaryDataAdapterTest

---
 .../DataAdapter/AuxiliaryDataAdapterTest.cs   | 133 ++++++++++++++++++
 1 file changed, 133 insertions(+)
 create mode 100644 VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/AuxiliaryDataAdapterTest.cs

diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/AuxiliaryDataAdapterTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/AuxiliaryDataAdapterTest.cs
new file mode 100644
index 0000000000..59ea03c3ce
--- /dev/null
+++ b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/AuxiliaryDataAdapterTest.cs
@@ -0,0 +1,133 @@
+using System;
+using System.Collections.Generic;
+using Moq;
+using NUnit.Framework;
+using TUGraz.VectoCommon.InputData;
+using TUGraz.VectoCommon.Models;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter.SimulationComponents;
+
+namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter;
+
+public class AuxiliaryDataAdapterTest
+{
+
+	[TestCase(VectoSimulationJobType.BatteryElectricVehicle,
+		new[] { "Full electric steering gear" },
+		"Vacuum pump + elec. driven",
+		true,
+		2,
+		TestName = "PEVAuxFailSteeredAxle")]
+	[TestCase(VectoSimulationJobType.BatteryElectricVehicle,
+		new[] { "Full electric steering gear" },
+		"Vacuum pump + elec. driven",
+		false,
+		TestName = "PEVAuxPass")]
+	[TestCase(VectoSimulationJobType.BatteryElectricVehicle,
+		new[] { "Full electric steering gear" },
+		"Medium Supply 1-stage + mech. clutch + AMS",
+		true,
+		TestName = "PEVAuxFailPS")]
+	[TestCase(VectoSimulationJobType.SerialHybridVehicle,
+		new[] { "Full electric steering gear" },
+		"Vacuum pump + elec. driven",
+		false,
+		TestName = "S-HEV Aux Pass")]
+	[TestCase(VectoSimulationJobType.ParallelHybridVehicle,
+		new[] { "Full electric steering gear" },
+		"Vacuum pump + elec. driven",
+		false,
+		TestName = "PEVAuxPass")]
+	public void HeavyLorryPEVAuxiliaryDataAdapterFailTest(VectoSimulationJobType jobType, string[] spTechnologies, string psTechnology, bool fail, int? steeredAxles = null)
+	{
+		var dataAdapter = new HeavyLorryPEVAuxiliaryDataAdapter();
+
+		var auxData = new Mock<IAuxiliariesDeclarationInputData>();
+
+		Mock<IAuxiliaryDeclarationInputData> steeringSystem = new Mock<IAuxiliaryDeclarationInputData>();
+		foreach (var spTechnoly in spTechnologies)
+		{
+			steeringSystem.SetType(AuxiliaryType.SteeringPump)
+				.AddTechnology(spTechnoly);
+		}
+
+		var hvac = new Mock<IAuxiliaryDeclarationInputData>()
+			.SetType(AuxiliaryType.HVAC)
+			.AddTechnology("Default");
+		var pneumatic = new Mock<IAuxiliaryDeclarationInputData>()
+			.SetType(AuxiliaryType.PneumaticSystem)
+			.AddTechnology(psTechnology);
+		var elSystem = new Mock<IAuxiliaryDeclarationInputData>()
+			.SetType(AuxiliaryType.ElectricSystem)
+			.AddTechnology("Standard technology");
+
+
+
+
+		auxData.AddAuxiliaries(steeringSystem.Object, hvac.Object, pneumatic.Object, elSystem.Object);
+		try
+		{
+			dataAdapter.CreateAuxiliaryData(auxData.Object, null, MissionType.LongHaul, VehicleClass.Class12,
+				4.SI<Meter>(), steeredAxles ?? 1, VectoSimulationJobType.BatteryElectricVehicle);
+		}
+		catch (Exception ex)
+		{
+			if (fail)
+			{
+				Assert.Pass($"Expected Exception {ex.Message}");
+			}
+			else
+			{
+				throw new Exception("Exception occured", ex);
+			}
+		}
+
+
+
+
+
+
+
+	}
+}
+
+
+public static class AuxiliariesInputMockHelper
+{
+	public static Mock<IAuxiliariesDeclarationInputData> AddAuxiliary(this Mock<IAuxiliariesDeclarationInputData> mock, IAuxiliaryDeclarationInputData aux)
+	{
+		var list = mock.Object?.Auxiliaries ?? new List<IAuxiliaryDeclarationInputData>();
+		list.Add(aux);
+		mock.Setup(aux => aux.Auxiliaries)
+			.Returns(list);
+
+		return mock;
+	}
+
+	public static Mock<IAuxiliariesDeclarationInputData> AddAuxiliaries(
+		this Mock<IAuxiliariesDeclarationInputData> mock, params IAuxiliaryDeclarationInputData[] aux)
+	{
+
+		foreach (var auxiliary in aux)
+		{
+			mock = mock.AddAuxiliary(auxiliary);
+		}
+
+
+		return mock;
+	}
+
+	public static Mock<IAuxiliaryDeclarationInputData> SetType(this Mock<IAuxiliaryDeclarationInputData> mock, AuxiliaryType type)
+	{
+		mock.Setup(aux => aux.Type).Returns(type);
+		return mock;
+	}
+
+	public static Mock<IAuxiliaryDeclarationInputData> AddTechnology(this Mock<IAuxiliaryDeclarationInputData> mock, string technology)
+	{
+		var list = mock.Object.Technology ?? new List<string>();
+		list.Add(technology);
+		mock.Setup(aux => aux.Technology).Returns(list);
+		return mock;
+	}
+}
\ No newline at end of file
-- 
GitLab