Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 2b3b90b0 authored by Franz KOBER josef's avatar Franz KOBER josef
Browse files

added multistage report to generate a new vif xml

parent 2d340ac3
No related branches found
No related tags found
No related merge requests found
......@@ -277,7 +277,7 @@ namespace TUGraz.VectoCommon.InputData
public static string ToXMLFormat(this PredictiveCruiseControlType pcc)
{
return pcc.ToString().ToLowerInvariant().Replace(Prefix, "").Replace(SeparatorEnum, SeparatorXML);
return pcc.ToString().ToLowerInvariant().Replace(Prefix.ToLowerInvariant(), "").Replace(SeparatorEnum, SeparatorXML);
}
public static string GetName(this PredictiveCruiseControlType pcc)
......
......@@ -70,6 +70,17 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
string.Format(".//*[local-name()='{0}' and @unit='MJ/km']", XMLNames.Report_Result_EnergyConsumption))?.InnerText
.ToDouble().SI(Unit.SI.Mega.Joule.Per.Kilo.Meter).Cast<JoulePerMeter>())).ToDictionary(x => x.Key, x => x.Value);
var co2Nodes = GetNodes(XMLNames.Report_Results_CO2, xmlNode);
var resultCO2 = new Dictionary<string, double>();
foreach (XmlNode co2Node in co2Nodes) {
var attribute = GetAttribute(co2Node, XMLNames.Report_Results_Unit_Attr);
var value = co2Node?.InnerText;
if(value != null)
resultCO2.Add(attribute, value.ToDouble());
}
return new Result
{
ResultStatus = resultStatus,
......@@ -77,7 +88,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider
VehicleGroup = VehicleClassHelper.Parse(vehicleGroup),
SimulationParameter = simulationParams,
EnergyConsumption = energyConsumption,
CO2 = new Dictionary<string, double>()
CO2 = resultCO2
};
}
......
This diff is collapsed.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using Ninject;
using NUnit.Framework;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCore.Configuration;
using TUGraz.VectoCore.InputData.FileIO.XML;
using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider;
using TUGraz.VectoCore.Models.Simulation.Impl;
using TUGraz.VectoCore.OutputData.FileIO;
using TUGraz.VectoCore.Tests.Models.Simulation;
using TUGraz.VectoCore.Utils;
using XmlDocumentType = System.Xml.XmlDocumentType;
namespace TUGraz.VectoCore.Tests.Integration.Multistage
{
[TestFixture]
[Parallelizable(ParallelScope.All)]
public class MultistageVehicleTest
{
const string VIFDirPath = @"TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\";
const string InputDirPath = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\";
const string InputFilePath = InputDirPath + "vecto_vehicle-stage_vif_input.xml";
const string VIFInputFile = VIFDirPath + "vecto_multistage_primary_vehicle_stage_2_3.xml";
private const string vifResult = VIFDirPath + "vif_vehicle-sample.xml";
protected IXMLInputDataReader xmlInputReader;
protected IXMLInputDataReader xmlVIFInputReader;
private IKernel _kernel;
[OneTimeSetUp]
public void RunBeforeAnyTests()
{
Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
_kernel = new StandardKernel(new VectoNinjectModule());
xmlInputReader = _kernel.Get<IXMLInputDataReader>();
xmlVIFInputReader = _kernel.Get<IXMLInputDataReader>();
}
[TestCase(VIFInputFile, InputFilePath, 1)]
public void TestSimulationMultistageVehicle(string vifFilename, string inputFilename, int numRuns)
{
//Input files
var inputReader = XmlReader.Create(inputFilename);
var inputDataProvider = xmlInputReader.CreateDeclaration(inputReader);
var vehicle = inputDataProvider.JobInputData.Vehicle;
var vifReader = XmlReader.Create(vifFilename);
var vifDataProvider = xmlInputReader.Create(vifReader) as IMultistageBusInputDataProvider;
var writer = new FileOutputWriter(vifResult);
var inputData = new XMLDeclarationVIFInputData(vifDataProvider, vehicle);
var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer);
var jobContainer = new JobContainer(new MockSumWriter());
var runs = factory.SimulationRuns().ToList();
Assert.AreEqual(numRuns, runs.Count);
foreach (var run in runs)
{
jobContainer.AddRun(run);
}
jobContainer.Execute();
jobContainer.WaitFinished();
var progress = jobContainer.GetProgress();
Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat<Exception>(progress.Select(r => r.Value.Error)));
var validator = new XMLValidator(XmlReader.Create(writer.XMLMultistageReportFileName));
Assert.IsTrue(validator.ValidateXML(VectoCore.Utils.XmlDocumentType.MultistageOutputData), validator.ValidationError);
}
}
}
......@@ -4681,6 +4681,9 @@
<Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_vif_input.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_multiple_stages.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
......@@ -4696,6 +4699,9 @@
<Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_multiple_stages_NGTankSystem.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_multiple_stages_vif.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_one_stage.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment