diff --git a/VectoCore/VectoCore/Utils/XMLHelper.cs b/VectoCore/VectoCore/Utils/XMLHelper.cs index 778baf28433ec8975aaecd65fb9ce80f7aa9315b..2593f35cfc157e14e003de24a60c468c5d6af3be 100644 --- a/VectoCore/VectoCore/Utils/XMLHelper.cs +++ b/VectoCore/VectoCore/Utils/XMLHelper.cs @@ -100,8 +100,8 @@ namespace TUGraz.VectoCore.Utils { { switch (unit) { case "%": return GetValueAsUnit(value * 100, unit, decimals); + default: return GetValueAsUnit(value, unit, decimals); } - throw new NotImplementedException(string.Format("unknown unit '{0}'", unit)); } private static object[] GetValueAsUnit(double value, string unit, uint? decimals) diff --git a/VectoCore/VectoCore/Utils/XMLValidator.cs b/VectoCore/VectoCore/Utils/XMLValidator.cs index 4120e8d074d5195b868a6b69db08b284d00f4d8d..6752f698de79e6ecc19f6d748408d103b8c1940d 100644 --- a/VectoCore/VectoCore/Utils/XMLValidator.cs +++ b/VectoCore/VectoCore/Utils/XMLValidator.cs @@ -52,7 +52,8 @@ namespace TUGraz.VectoCore.Utils {XmlDocumentType.DeclarationComponentData, Tuple.Create("VectoComponent{0}.xsd", new [] {"1.0"}) }, {XmlDocumentType.EngineeringData, Tuple.Create("VectoEngineeringInput{0}.xsd", new [] {"0.7"}) }, {XmlDocumentType.ManufacturerReport, Tuple.Create("VectoOutputManufacturer{0}.xsd", new [] {"0.4", "0.5", "0.6", "0.7"}) }, - { XmlDocumentType.CustomerReport , Tuple.Create("VectoOutputCustomer{0}.xsd", new [] {"0.4", "0.5", "0.7"})}, + {XmlDocumentType.CustomerReport , Tuple.Create("VectoOutputCustomer{0}.xsd", new [] {"0.4", "0.5", "0.7"})}, + {XmlDocumentType.MonitoringReport , Tuple.Create("VectoMonitoring{0}.xsd", new [] {"0.7"})}, }; private XMLValidator(Action<bool> resultaction, Action<XmlSeverityType, ValidationEvent> validationErrorAction) @@ -134,6 +135,7 @@ namespace TUGraz.VectoCore.Utils EngineeringData = 1<<4, ManufacturerReport = 1<<5, CustomerReport = 1<<6, + MonitoringReport = 1<<7, } } diff --git a/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs b/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs index ebad3406e1ce6ebbb2b6e551aa39b5c27e53e482..ff651e52c6584fc8354003b95a1100b7f05df107 100644 --- a/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs +++ b/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs @@ -31,7 +31,9 @@ using System.IO; using System.Linq; +using System.Text; using System.Xml; +using System.Xml.Linq; using System.Xml.XPath; using NUnit.Framework; using TUGraz.VectoCommon.Models; @@ -105,6 +107,50 @@ namespace TUGraz.VectoCore.Tests.Integration } } + [TestCase()] + public void TestValidationXMLReports() + { + var jobfile = @"Testdata\XML\XMLReaderDeclaration\vecto_vehicle-sample.xml"; + var dataProvider = new XMLDeclarationInputDataProvider(XmlReader.Create(jobfile), true); + var writer = new FileOutputWriter(jobfile); + var xmlReport = new XMLDeclarationReport(writer); + var sumData = new SummaryDataContainer(writer); + var jobContainer = new JobContainer(sumData); + + if (File.Exists(writer.SumFileName)) { + File.Delete(writer.SumFileName); + } + + var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) { + WriteModalResults = false, + Validate = false, + }; + jobContainer.AddRuns(runsFactory); + + jobContainer.Execute(); + jobContainer.WaitFinished(); + + var mrfValidator = GetValidator(xmlReport.FullReport); + mrfValidator.ValidateXML(XMLValidator.XmlDocumentType.ManufacturerReport); + + var cifValidator = GetValidator(xmlReport.CustomerReport); + cifValidator.ValidateXML(XMLValidator.XmlDocumentType.CustomerReport); + + var monitoringValidator = GetValidator(xmlReport.MonitoringReport); + monitoringValidator.ValidateXML(XMLValidator.XmlDocumentType.MonitoringReport); + } + + private static XMLValidator GetValidator(XDocument xmlReport) + { + var mrfStream = new MemoryStream(); + var mrfWriter = new XmlTextWriter(mrfStream, Encoding.UTF8); + xmlReport.WriteTo(mrfWriter); + mrfWriter.Flush(); + mrfStream.Flush(); + mrfStream.Seek(0, SeekOrigin.Begin); + return new XMLValidator(new XmlTextReader(mrfStream)); + } + [TestCase()] public void TestXMLReportPTO() {