Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 0aa210ba authored by Harald Martini's avatar Harald Martini
Browse files

updated heavy lorry simulation tests

parent cc846576
No related branches found
No related tags found
No related merge requests found
using System.IO;

#define singlethreaded
using System.Collections.Immutable;
using System.IO;
using System.Linq;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
using Ninject;
using NUnit.Framework;
using TUGraz.VectoCommon.Models;
......@@ -6,15 +13,19 @@ using TUGraz.VectoCore.InputData.FileIO.XML;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration;
using TUGraz.VectoCore.Models.Simulation.Impl;
using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory;
using TUGraz.VectoCore.OutputData;
using TUGraz.VectoCore.OutputData.FileIO;
using TUGraz.VectoCore.Tests.Models.Simulation;
namespace TUGraz.VectoCore.Tests.Integration.Declaration.HeavyLorry;
[TestFixture]
public class HeavyLorrySimulation
{
private const string BASE_DIR = @"TestData\Integration\DeclarationMode\V24_DeclarationMode\";
private StandardKernel _kernel;
private IXMLInputDataReader _xmlReader;
......@@ -28,56 +39,73 @@ public class HeavyLorrySimulation
[TestCase(@"HeavyLorry\PEV_heavyLorry_AMT_E2_realistic.xml"),
TestCase(@"HeavyLorry\Conventional_heavyLorry_AMT.xml"),
TestCase(@"HeavyLorry\Conventional_heavyLorry_AMT.xml", false),
TestCase(@"HeavyLorry\PEV_heavyLorry_AMT_E2_realistic.xml", false),
TestCase(@"HeavyLorry\PEV_heavyLorry_E3_realistic.xml"),
TestCase(@"HeavyLorry\PEV_heavyLorry_E3_realistic.xml", false),
TestCase(@"HeavyLorry\PEV_heavyLorry_E3_realistic_TorqueLimits.xml"),
TestCase(@"HeavyLorry\PEV_heavyLorry_E3_realistic_TorqueLimits.xml", false),
TestCase(@"HeavyLorry\PEV_heavyLorry_E3_realistic_municipal.xml", false),
TestCase(@"HeavyLorry\PEV_heavyLorry_E3_realistic_municipal.xml"),
TestCase(@"HeavyLorry\PEV_heavyLorry_E4.xml")]
public void HeavyLorrySimulationTest(string jobFile, bool multiThreaded = true)
TestCase(@"HeavyLorry\PEV_heavyLorry_AMT_E2_pto_transm.xml"),
TestCase(@"HeavyLorry\PEV_heavyLorry_E4.xml"),
TestCase(@"HeavyLorry\Group2_HEV_S2.xml"),
TestCase(@"HeavyLorry\Group5_HEV_P2_.xml"),
]
public void HeavyLorrySimulationTest(string jobFile)
{
RunSimulation(jobFile, multiThreaded);
#if singlethreaded
RunSimulation(jobFile, false);
#else
RunSimulation(jobFile, true);
#endif
}
public void RunSimulation(string jobFile, bool multiThreaded = true)
{
var filePath = Path.Combine(BASE_DIR, jobFile);
var dataProvider = _xmlReader.CreateDeclaration(filePath);
var fileWriter = new FileOutputWriter(filePath);
var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter);
var jobContainer = new JobContainer(new MockSumWriter()) { };
runsFactory.WriteModalResults = true;
var jobContainer = new JobContainer(new MockSumWriter()){};
//var jobContainer = new JobContainer(new MockSumWriter()) { };
jobContainer.AddRuns(runsFactory);
PrintRuns(jobContainer, null);
jobContainer.Execute(multiThreaded);
jobContainer.WaitFinished();
Assert.IsTrue(jobContainer.AllCompleted);
Assert.IsTrue(jobContainer.Runs.TrueForAll(runEntry => runEntry.Success));
PrintRuns(jobContainer, fileWriter);
PrintFiles(fileWriter);
}
private void PrintRuns(JobContainer jobContainer, FileOutputWriter fileWriter = null)
{
foreach (var keyValuePair in jobContainer.GetProgress()) {
TestContext.WriteLine($"{keyValuePair.Key}: {keyValuePair.Value.CycleName} {keyValuePair.Value.RunName} {keyValuePair.Value.Error?.Message}" );
//if (fileWriter != null && keyValuePair.Value.Success) {
// TestContext.AddTestAttachment(fileWriter.GetModDataFileName(keyValuePair.Value.RunName, keyValuePair.Value.CycleName, keyValuePair.Value.RunSuffix), keyValuePair.Value.RunName);
// }
// }
}
}
private void PrintFiles(FileOutputWriter fileWriter)
{
//if (fileWriter.GetWrittenFiles().Count == 0) {
// Assert.Fail("No files written\n");
//}
foreach (var keyValuePair in fileWriter.GetWrittenFiles()) {
TestContext.WriteLine($"{keyValuePair.Key} written to {keyValuePair.Value}");
TestContext.AddTestAttachment(keyValuePair.Value, keyValuePair.Key.ToString());
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using Moq;
using Ninject;
using NUnit.Framework;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.InputData.FileIO.XML;
using TUGraz.VectoCore.Models.Simulation;
using TUGraz.VectoCore.Models.Simulation.Impl;
using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory;
using TUGraz.VectoCore.Models.SimulationComponent.Impl;
using TUGraz.VectoCore.OutputData.FileIO;
namespace TUGraz.VectoCore.Tests.Integration.Declaration.HeavyLorry;
[TestFixture]
public class SteeringPumpTests
{
private const string BASE_DIR = @"TestData\Integration\DeclarationMode\V24_DeclarationMode\";
private StandardKernel _kernel;
private IXMLInputDataReader _xmlReader;
[OneTimeSetUp]
public void OneTimeSetup()
{
_kernel = new StandardKernel(new VectoNinjectModule());
_xmlReader = _kernel.Get<IXMLInputDataReader>();
}
[TestCase(@"HeavyLorry\Conventional_heavyLorry_AMT.xml")]
public void MechanicalSPTest(string jobFile)
{
var runsFactory = GetRunsFactory(jobFile);
runsFactory.SerializeVectoRunData = true;
foreach (var simulationRun in runsFactory.SimulationRuns()) {
var container = simulationRun.GetContainer() as VehicleContainer;
Assert.IsTrue(HasEngineAuxiliary("STP", container));
Assert.IsTrue(HasEngineAuxiliary("FAN", container));
Assert.IsTrue(HasEngineAuxiliary("ES", container));
Assert.IsTrue(HasEngineAuxiliary("PS", container));
Assert.IsTrue(HasEngineAuxiliary("AC", container));
}
}
private bool HasEngineAuxiliary(string aux, VehicleContainer container)
{
try {
dynamic engine = container.EngineInfo;
var engineAux = engine.EngineAux as EngineAuxiliary;
Assert.NotNull(engineAux);
var auxField =
typeof(EngineAuxiliary).GetField("Auxiliaries", BindingFlags.NonPublic | BindingFlags.Instance);
var powerDemands =
auxField.GetValue(engineAux) as Dictionary<string, Func<PerSecond, Second, Second, bool, Watt>>;
return powerDemands.ContainsKey(aux);
} catch (Exception ex) {
return false;
}
}
private bool HasElectricAuxiliary(string aux, VehicleContainer container)
{
try {
dynamic engine = container.ElectricSystemInfo;
var engineAux = engine.EngineAux as EngineAuxiliary;
Assert.NotNull(engineAux);
var auxField =
typeof(EngineAuxiliary).GetField("Auxiliaries", BindingFlags.NonPublic | BindingFlags.Instance);
var powerDemands =
auxField.GetValue(engineAux) as Dictionary<string, Func<PerSecond, Second, Second, bool, Watt>>;
return powerDemands.ContainsKey(aux);
} catch (Exception ex) {
return false;
}
}
private ISimulatorFactory GetRunsFactory(string jobFile)
{
var filePath = Path.Combine(BASE_DIR, jobFile);
var dataProvider = _xmlReader.CreateDeclaration(filePath);
// Mock<IInputDataProvider> moq =
// new Mock<IInputDataProvider>(() => dataProvider, MockBehavior.Strict);
var fileWriter = new FileOutputWriter(filePath);
var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter);
return runsFactory;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment