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

Skip to content
Snippets Groups Projects
Commit 580fab80 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

adding testcase for influence of engine correction factors

parent 0481a616
No related branches found
No related tags found
No related merge requests found
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);
}
}
}
......@@ -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)
{
......
......@@ -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" />
......
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