diff --git a/VectoCommon/VectoCommon/Models/PowertrainPosition.cs b/VectoCommon/VectoCommon/Models/PowertrainPosition.cs index ae6edc8132e74b590969357b163d036327ac9377..d6bae6be6c4bc87ed946f3ff5e957f0d38445a0d 100644 --- a/VectoCommon/VectoCommon/Models/PowertrainPosition.cs +++ b/VectoCommon/VectoCommon/Models/PowertrainPosition.cs @@ -2,11 +2,10 @@ using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Utils; -namespace TUGraz.VectoCommon.InputData -{ +namespace TUGraz.VectoCommon.InputData { public enum PowertrainPosition { - HybridPositionNotSet, // this has to be the first entry so that it is used as default for not initialized fields! + HybridPositionNotSet, // this has to be the first entrie so that it is used as default for not initialized fields! HybridP0, HybridP1, HybridP2, @@ -19,13 +18,12 @@ namespace TUGraz.VectoCommon.InputData BatteryElectricE4, BatteryElectricE3, BatteryElectricE2, - } public static class PowertrainPositionHelper { public const string HybridPrefix = "Hybrid"; - public const string BatteryElectricPrefix = "BatteryElectric"; + public const string BatteryElectriPrefix = "BatteryElectric"; public static PowertrainPosition Parse(string pos) { @@ -33,22 +31,22 @@ namespace TUGraz.VectoCommon.InputData return PowertrainPosition.GEN; } - if (pos.StartsWith("P", StringComparison.InvariantCultureIgnoreCase)) { + if (pos.StartsWith("P",StringComparison.InvariantCultureIgnoreCase)) { return (HybridPrefix + pos).Replace(".", "_").ParseEnum<PowertrainPosition>(); } if (pos.StartsWith("B", StringComparison.InvariantCultureIgnoreCase)) { - return (BatteryElectricPrefix + pos.Replace("B", "E")).ParseEnum<PowertrainPosition>(); + return (BatteryElectriPrefix + pos.Replace("B", "E")).ParseEnum<PowertrainPosition>(); } if (pos.StartsWith("E", StringComparison.InvariantCultureIgnoreCase)) { - return (BatteryElectricPrefix + pos).ParseEnum<PowertrainPosition>(); + return (BatteryElectriPrefix + pos).ParseEnum<PowertrainPosition>(); } throw new VectoException("invalid powertrain position {0}", pos); } public static string GetName(this PowertrainPosition pos) { - return pos.ToString().Replace(HybridPrefix, "").Replace(BatteryElectricPrefix, "").Replace("_", "."); + return pos.ToString().Replace(HybridPrefix, "").Replace(BatteryElectriPrefix, "").Replace("_", "."); } public static string GetLabel(this PowertrainPosition pos) @@ -64,10 +62,8 @@ namespace TUGraz.VectoCommon.InputData return pos.ToString().Replace(HybridPrefix, "").Replace("_", "."); case PowertrainPosition.GEN: return nameof(PowertrainPosition.GEN); - case PowertrainPosition.HybridPositionNotSet: - return "Position not set"; } - return pos.ToString().Replace(BatteryElectricPrefix, "").Replace("B", "E"); + return pos.ToString().Replace(BatteryElectriPrefix, "").Replace("B", "E"); } public static bool IsBatteryElectric(this PowertrainPosition pos) @@ -91,6 +87,33 @@ namespace TUGraz.VectoCommon.InputData } } + public static string ToXmlFormat(this PowertrainPosition pos) + { + switch (pos) { + case PowertrainPosition.HybridPositionNotSet: + throw new ArgumentException("Hybrid position not set"); + case PowertrainPosition.HybridP0: + case PowertrainPosition.HybridP1: + case PowertrainPosition.HybridP2: + case PowertrainPosition.HybridP2_5: + case PowertrainPosition.HybridP3: + case PowertrainPosition.HybridP4: + case PowertrainPosition.BatteryElectricE4: + case PowertrainPosition.BatteryElectricE3: + case PowertrainPosition.BatteryElectricE2: + return GetPositionWithoutPrefix(pos.ToString()); + case PowertrainPosition.GEN: + return "GEN"; + default: + throw new ArgumentOutOfRangeException(nameof(pos), pos, null); + } + } + + private static string GetPositionWithoutPrefix(string position) + { + return position.Replace(BatteryElectriPrefix, "").Replace("E", "").Replace(HybridPrefix, "").Replace("P", "") + .Replace("_", "."); + } public static bool IsSerialHybrid(this PowertrainPosition pos) { return IsBatteryElectric(pos); diff --git a/VectoCore/VectoCoreTest/Utils/MockVehicleInputData.cs b/VectoCore/VectoCoreTest/Utils/MockVehicleInputData.cs index d5502a5023b79e6cc793b1c65d518ef7cb6c6bef..632be8b00f0bd4acae6ccb16ad0da3e95c8512bc 100644 --- a/VectoCore/VectoCoreTest/Utils/MockVehicleInputData.cs +++ b/VectoCore/VectoCoreTest/Utils/MockVehicleInputData.cs @@ -117,5 +117,6 @@ namespace TUGraz.VectoCore.Tests.Utils public bool OvcHev { get; } public Watt MaxChargingPower { get; } + public VectoSimulationJobType VehicleType { get; } } } \ No newline at end of file