diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index a1b81d704e32d4bc319a36df402bc3c12dc068d5..d713ae324975d5d84988e337e3ad41087a56a35e 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -397,6 +397,7 @@ namespace TUGraz.VectoCore.OutputData protected IList<string> FcCols = new List<string>(); protected IList<string> GearColumns = new List<string>(); protected IList<string> AuxColumns = new List<string>(); + protected IList<string> EmColumns = new List<string>(); /// <summary> @@ -525,10 +526,17 @@ namespace TUGraz.VectoCore.OutputData private void CreateElectricMotorColumns(IElectricMotor em, VectoRunData runData, Tuple<string, Type>[] cols) { lock (Table) { + var emColNames = cols.Select(x => string.Format(x.Item1, em.Position.GetName())); Table.Columns.AddRange(cols .Select(x => Tuple.Create(string.Format(x.Item1, em.Position.GetName()), x.Item2)) .Where(x => !Table.Columns.Contains(x.Item1)).Select(x => new DataColumn(x.Item1, x.Item2)) .ToArray()); + foreach (var emColName in emColNames) { + if(EmColumns.Contains(emColName)) { + continue; + } + EmColumns.Add(emColName); + } } } @@ -675,7 +683,12 @@ namespace TUGraz.VectoCore.OutputData SumDataFields.f_equiv, }); - cols.AddRange(new[] { + cols.AddRange(EmColumns); + + + + + cols.AddRange(new[] { SumDataFields.REESS_StartSoC, SumDataFields.REESS_EndSoC, SumDataFields.REESS_DeltaEnergy, diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/HeavyLorry/LorrySimulation.cs b/VectoCore/VectoCoreTest/Integration/Declaration/HeavyLorry/LorrySimulation.cs index d8f3b5d4faa7f802fc9a3c7165b4a685a2827fb0..01ce49c0d2fe0203c311154344b5f3c4f972339b 100644 --- a/VectoCore/VectoCoreTest/Integration/Declaration/HeavyLorry/LorrySimulation.cs +++ b/VectoCore/VectoCoreTest/Integration/Declaration/HeavyLorry/LorrySimulation.cs @@ -18,6 +18,7 @@ using System.Xml.Schema; using Moq; using Ninject; using NUnit.Framework; +using NUnit.Framework.Constraints; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; @@ -261,7 +262,23 @@ public class LorrySimulation modData = VectoCSVFile.Read(modFileName, false, true); } - + public void AssertVSUMElectricMotorFields(string vsumFileName, VectoRunData runData) + { + var sumData = VectoCSVFile.Read(vsumFileName, false, true); + var em_positions = runData.ElectricMachinesData.Select(em => em.Item1); + foreach (var em_pos in runData.ElectricMachinesData.Select(e => e.Item1)) { + Tuple<string, Type>[] columns; + if (em_pos == PowertrainPosition.IEPC) { + columns = SummaryDataContainer.IEPCColumns; + } else { + columns = SummaryDataContainer.ElectricMotorColumns; + } + foreach (var (s, type) in columns) { + var colName = string.Format(s, em_pos.GetLabel()); + Assert.IsTrue(sumData.Columns.Contains(colName), $"{colName} missing in sum file"); + } + } + } public void VSUM_order_test(string fileName, VectoRunData runData) { @@ -553,6 +570,8 @@ public class LorrySimulation jobContainer.Execute(false); WaitAndAssertSuccess(jobContainer, fileWriter); + AssertVSUMElectricMotorFields(fileWriter.SumFileName, runs.First().GetContainer().RunData); + } @@ -580,8 +599,8 @@ public class LorrySimulation var modData = ((ModalDataContainer)((VehicleContainer)runs.Single().GetContainer()).ModData).Data; jobContainer.Execute(false); WaitAndAssertSuccess(jobContainer, fileWriter); - - } + AssertVSUMElectricMotorFields(fileWriter.SumFileName, runs.First().GetContainer().RunData); + } [TestCase(Group5_HEV_S2_OVC, 12)] [TestCase(Group5_HEV_S3_OVC, 12)] @@ -620,6 +639,7 @@ public class LorrySimulation AssertSHEV_PEV_Conditioning(modDataRow, runs.Single()); } Assert.IsTrue(modData.Rows.Count > 0); + AssertVSUMElectricMotorFields(fileWriter.SumFileName, runs.First().GetContainer().RunData); } [TestCase(Group5_HEV_S2_OVC, 12)] @@ -758,6 +778,8 @@ public class LorrySimulation } } + AssertVSUMElectricMotorFields(fileWriter.SumFileName, runs.First().GetContainer().RunData); + Assert.IsTrue(modData.Rows.Count > 0); //foreach (var vectoRun in runs.Where(r => r != run)) //{ // var rd = vectoRun.GetContainer().RunData;