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