Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

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

Merge pull request #622 in VECTO/vecto-sim from...

Merge pull request #622 in VECTO/vecto-sim from ~EMQUARIMA/vecto-sim:bugfix/VECTO-703-pto-output-in-mrf-file to develop

* commit '2e091771':
  pass pto data for initializing xml reports
  adding testcase illustrating wrong manufacturer report output
parents fea1ba21 2e091771
No related branches found
No related tags found
No related merge requests found
......@@ -134,6 +134,7 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl
_dao.CreateAuxiliaryData(InputDataProvider.JobInputData.Vehicle.AuxiliaryInputData(),
_segment.Missions.First().MissionType,
_segment.VehicleClass),
PTO = _ptoTransmissionData,
InputDataHash = InputDataProvider.XMLHash
};
powertrainConfig.VehicleData.VehicleClass = _segment.VehicleClass;
......
......@@ -35,12 +35,16 @@ using System.Xml;
using System.Xml.XPath;
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.Models.Simulation.Impl;
using TUGraz.VectoCore.OutputData;
using TUGraz.VectoCore.OutputData.FileIO;
using TUGraz.VectoCore.OutputData.XML;
using TUGraz.VectoCore.Tests.XML;
using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.Tests.Integration
......@@ -73,16 +77,22 @@ namespace TUGraz.VectoCore.Tests.Integration
Validate = false,
};
jobContainer.AddRuns(runsFactory);
jobContainer.Execute();
jobContainer.WaitFinished();
// no need to run the simulation, we only check whether the meta-data is correct, no results are considered
//jobContainer.Execute();
//jobContainer.WaitFinished();
xmlReport.DoWriteReport();
var manufacturerReport = xmlReport.FullReport;
Assert.AreEqual(5, manufacturerReport.XPathSelectElement("//*[local-name()='VehicleGroup']").Value.ToInt());
Assert.IsFalse(XmlConvert.ToBoolean(manufacturerReport.XPathSelectElement("//*[local-name()='PTO']").Value));
var reportWheels = manufacturerReport.XPathSelectElements("//*[local-name()='TyreCertificationNumber']").ToList();
var i = 0;
Assert.AreEqual(dataProvider.JobInputData.Vehicle.Axles.Count, reportWheels.Count);
var i = 0;
foreach (var axleDeclarationInputData in dataProvider.JobInputData.Vehicle.Axles) {
Assert.AreEqual(axleDeclarationInputData.Tyre.CertificationNumber, reportWheels[i++].Value);
}
......@@ -94,5 +104,80 @@ namespace TUGraz.VectoCore.Tests.Integration
Assert.IsFalse(string.IsNullOrWhiteSpace(digestWheel.Value));
}
}
[TestCase()]
public void TestXMLReportPTO()
{
var ptoGearWheels = XMLDeclarationInputTest.GetEnumOptions("PTOShaftsGearWheelsType", "1.0");
var ptoOthers = XMLDeclarationInputTest.GetEnumOptions("PTOOtherElementsType", "1.0");
foreach (var ptoGearWheel in ptoGearWheels) {
foreach (var ptoOther in ptoOthers) {
if (ptoGearWheel == "none" || ptoGearWheel == "only one engaged gearwheel above oil level") {
if (ptoOther != "none") {
continue;
}
} else {
if (ptoOther == "none") {
continue;
}
}
var jobfile = @"Testdata\XML\XMLReaderDeclaration\vecto_vehicle-sample.xml";
var doc = new XmlDocument();
doc.Load(XmlReader.Create(jobfile));
var nav = doc.CreateNavigator();
var manager = new XmlNamespaceManager(nav.NameTable);
var helper = new XPathHelper(ExecutionMode.Declaration);
helper.AddNamespaces(manager);
var ptoGearWheelsNode = nav.SelectSingleNode(
helper.QueryAbs(
helper.NSPrefix(
XMLNames.VectoInputDeclaration,
Constants.XML.RootNSPrefix),
XMLNames.Component_Vehicle,
XMLNames.Vehicle_PTO,
XMLNames.Vehicle_PTO_ShaftsGearWheels),
manager);
ptoGearWheelsNode.SetValue(ptoGearWheel);
var ptoOtherNode = nav.SelectSingleNode(
helper.QueryAbs(
helper.NSPrefix(
XMLNames.VectoInputDeclaration,
Constants.XML.RootNSPrefix),
XMLNames.Component_Vehicle,
XMLNames.Vehicle_PTO,
XMLNames.Vehicle_PTO_OtherElements),
manager);
ptoOtherNode.SetValue(ptoOther);
var modified = XmlReader.Create(new StringReader(nav.OuterXml));
var writer = new FileOutputWriter(jobfile);
var xmlReport = new XMLDeclarationReport(writer);
var sumData = new SummaryDataContainer(writer);
var jobContainer = new JobContainer(sumData);
var dataProvider = new XMLDeclarationInputDataProvider(modified, true);
var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) {
WriteModalResults = false,
Validate = false,
};
jobContainer.AddRuns(runsFactory);
xmlReport.DoWriteReport();
var manufacturerReport = xmlReport.FullReport;
Assert.AreEqual(
ptoGearWheel != "none",
XmlConvert.ToBoolean(manufacturerReport.XPathSelectElement("//*[local-name()='PTO']").Value),
"PTO Type: {0} {1}", ptoGearWheel, ptoOther);
}
}
}
}
}
......@@ -894,7 +894,7 @@ namespace TUGraz.VectoCore.Tests.XML
DeclarationData.HeatingVentilationAirConditioning);
}
private string[] GetEnumOptions(string xmlType, string schemaVersion)
public static string[] GetEnumOptions(string xmlType, string schemaVersion)
{
Stream resource;
var schemaFile = string.Format("VectoDeclarationDefinitions{0}.xsd", "." + schemaVersion);
......
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