diff --git a/VectoCommon/VectoCommon/Models/RetarderType.cs b/VectoCommon/VectoCommon/Models/RetarderType.cs index 4fa16e3926e70946d150a42a97aa97cfab0392a4..be41941035469400be1f7dbe228159d5164fba4d 100644 --- a/VectoCommon/VectoCommon/Models/RetarderType.cs +++ b/VectoCommon/VectoCommon/Models/RetarderType.cs @@ -29,85 +29,85 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ -using System; -using TUGraz.VectoCommon.Utils; - -namespace TUGraz.VectoCommon.Models -{ - public enum RetarderType - { - None, - TransmissionInputRetarder, - TransmissionOutputRetarder, - EngineRetarder, - LossesIncludedInTransmission - } - - public static class RetarderTypeHelper - { - public static RetarderType Parse(string retarderType) - { - switch (retarderType.ToLowerInvariant()) { - case "primary": - return RetarderType.TransmissionInputRetarder; - case "secondary": - return RetarderType.TransmissionOutputRetarder; - default: - return retarderType.ParseEnum<RetarderType>(); - } - } - - public static string GetName(this RetarderType retarder) - { - switch (retarder) { - case RetarderType.TransmissionInputRetarder: - return "primary"; - case RetarderType.TransmissionOutputRetarder: - return "secondary"; - default: - return retarder.ToString(); - } - } - - public static string GetLabel(this RetarderType retarder) - { - switch (retarder) { - case RetarderType.None: - return "None"; - case RetarderType.TransmissionInputRetarder: - return "Primary Retarder"; - case RetarderType.TransmissionOutputRetarder: - return "Secondary Retarder"; - case RetarderType.EngineRetarder: - return "Engine Retarder"; - case RetarderType.LossesIncludedInTransmission: - return "Included in Transmission Loss Maps"; - default: - throw new ArgumentOutOfRangeException("RetarderType", retarder, null); - } - } - - public static string ToXMLFormat(this RetarderType type) - { - switch (type) { - case RetarderType.None: - return "None"; - case RetarderType.TransmissionInputRetarder: - return "Transmission Input Retarder"; - case RetarderType.TransmissionOutputRetarder: - return "Transmission Output Retarder"; - case RetarderType.EngineRetarder: - return "Engine Retarder"; - case RetarderType.LossesIncludedInTransmission: - return "Losses included in Gearbox"; - default: - throw new ArgumentOutOfRangeException("RetarderType", type, null); - } - } - - public static bool IsDedicatedComponent(this RetarderType retarder) - { - return retarder == RetarderType.TransmissionInputRetarder || retarder == RetarderType.TransmissionOutputRetarder; - } - } -} \ No newline at end of file +using System; +using TUGraz.VectoCommon.Utils; + +namespace TUGraz.VectoCommon.Models +{ + public enum RetarderType + { + None, + TransmissionInputRetarder, + TransmissionOutputRetarder, + EngineRetarder, + LossesIncludedInTransmission + } + + public static class RetarderTypeHelper + { + public static RetarderType Parse(string retarderType) + { + switch (retarderType.ToLowerInvariant()) { + case "primary": + return RetarderType.TransmissionInputRetarder; + case "secondary": + return RetarderType.TransmissionOutputRetarder; + default: + return retarderType.ParseEnum<RetarderType>(); + } + } + + public static string GetName(this RetarderType retarder) + { + switch (retarder) { + case RetarderType.TransmissionInputRetarder: + return "primary"; + case RetarderType.TransmissionOutputRetarder: + return "secondary"; + default: + return retarder.ToString(); + } + } + + public static string GetLabel(this RetarderType retarder) + { + switch (retarder) { + case RetarderType.None: + return "None"; + case RetarderType.TransmissionInputRetarder: + return "Primary Retarder"; + case RetarderType.TransmissionOutputRetarder: + return "Secondary Retarder"; + case RetarderType.EngineRetarder: + return "Engine Retarder"; + case RetarderType.LossesIncludedInTransmission: + return "Included in Transmission Loss Maps"; + default: + throw new ArgumentOutOfRangeException("RetarderType", retarder, null); + } + } + + public static string ToXMLFormat(this RetarderType type) + { + switch (type) { + case RetarderType.None: + return "None"; + case RetarderType.TransmissionInputRetarder: + return "Transmission Input Retarder"; + case RetarderType.TransmissionOutputRetarder: + return "Transmission Output Retarder"; + case RetarderType.EngineRetarder: + return "Engine Retarder"; + case RetarderType.LossesIncludedInTransmission: + return "Losses included in Gearbox"; + default: + throw new ArgumentOutOfRangeException("RetarderType", type, null); + } + } + + public static bool IsDedicatedComponent(this RetarderType retarder) + { + return retarder == RetarderType.TransmissionInputRetarder || retarder == RetarderType.TransmissionOutputRetarder; + } + } +} diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs index 4fc3667293e9a01405ef9aac857a1f6ef0d566d2..ec5307606e6d07285b2ae874a4981d238f6fd898 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/AbstractSimulationDataAdapter.cs @@ -55,7 +55,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter Manufacturer = data.Manufacturer, ModelName = data.Model, Date = data.Date, - //CertificationNumber = data.CertificationNumber, + //CertificationNumber = data.CertificationNumber, DigestValueInput = data.DigestValue, VehicleCategory = data.VehicleCategory, AxleConfiguration = data.AxleConfiguration, @@ -95,12 +95,13 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter break; case RetarderType.None: case RetarderType.LossesIncludedInTransmission: + case RetarderType.EngineRetarder: retarder.Ratio = 1; break; default: // ReSharper disable once NotResolvedInText // ReSharper disable once LocalizableElement - throw new ArgumentOutOfRangeException("retarder.Type", "RetarderType unknown"); + throw new ArgumentOutOfRangeException("retarder", retarder.Type, "RetarderType unknown"); } if (!retarder.Type.IsDedicatedComponent()) { @@ -337,4 +338,4 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter return flc; } } -} \ No newline at end of file +} diff --git a/VectoCore/VectoCore/Utils/ProviderExtensions.cs b/VectoCore/VectoCore/Utils/ProviderExtensions.cs index 482a839bb7a1ff0f8be16f72cb7c277ecc33b87c..3811558039de96279f344439889ffba9fcbe5da1 100644 --- a/VectoCore/VectoCore/Utils/ProviderExtensions.cs +++ b/VectoCore/VectoCore/Utils/ProviderExtensions.cs @@ -120,12 +120,14 @@ namespace TUGraz.VectoCore.Utils case RetarderType.TransmissionInputRetarder: return prev.AddComponent(gearbox).AddComponent(new Retarder(container, data.LossMap, data.Ratio)); case RetarderType.None: - return prev.AddComponent(new DummyRetarder(container)).AddComponent(gearbox); case RetarderType.LossesIncludedInTransmission: + case RetarderType.EngineRetarder: return prev.AddComponent(new DummyRetarder(container)).AddComponent(gearbox); default: - throw new ArgumentOutOfRangeException(data.Type.ToString()); + // ReSharper disable once NotResolvedInText + // ReSharper disable once LocalizableElement + throw new ArgumentOutOfRangeException("retarderdata.Type", data.Type.ToString(), "Retardertype unknown"); } } } -} \ No newline at end of file +} diff --git a/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..aadaf3167db3a0e2450e741c1d532c4ca80b8a18 --- /dev/null +++ b/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs @@ -0,0 +1,52 @@ +using System.IO; +using System.Linq; +using System.Xml; +using NUnit.Framework; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.Configuration; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; +using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Utils; +using Assert = Microsoft.VisualStudio.TestTools.UnitTesting.Assert; + +namespace TUGraz.VectoCore.Tests.Models.Simulation +{ + [TestFixture] + public class DeclarationSimulationFactoryTest + { + const string SampleVehicleDecl = "TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample.xml"; + + [TestCase("None", RetarderType.None), + TestCase("Losses included in Gearbox", RetarderType.LossesIncludedInTransmission), + TestCase("Engine Retarder", RetarderType.EngineRetarder), + TestCase("Transmission Input Retarder", RetarderType.TransmissionInputRetarder), + TestCase("Transmission Output Retarder", RetarderType.TransmissionOutputRetarder)] + public void TestRetarderTypes(string xmlValue, RetarderType retarderType) + { + var reader = XmlReader.Create(SampleVehicleDecl); + + 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 xmlRetarderType = nav.SelectSingleNode(helper.QueryAbs( + helper.NSPrefix(XMLNames.VectoInputDeclaration, Constants.XML.RootNSPrefix), + XMLNames.Component_Vehicle, + XMLNames.Vehicle_RetarderType), manager); + xmlRetarderType.SetValue(xmlValue); + + var modified = XmlReader.Create(new StringReader(nav.OuterXml)); + + var inputDataProvider = new XMLDeclarationInputDataProvider(modified, true); + + var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null) { Validate = false }; + + var runs = factory.SimulationRuns().ToArray(); + Assert.AreEqual(8, runs.Length); + } + } +} diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index 62814703740d5442c60e44f07c7df037e26d072c..6f81bba31c466227205b64f8bea5c45557f7781a 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -116,6 +116,7 @@ <Compile Include="Models\Simulation\GearboxInertiaTest.cs" /> <Compile Include="Models\Simulation\MockSumWriter.cs" /> <Compile Include="Models\Simulation\GetSectionTest.cs" /> + <Compile Include="Models\Simulation\DeclarationSimulationFactoryTest.cs" /> <Compile Include="Reports\ActualModalSimulationDataTest.cs" /> <Compile Include="Reports\ModDataTest.cs" /> <Compile Include="Models\Simulation\MeasuredSpeedModeTest.cs" />