Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 72b14da3 authored by Michael KRISPER's avatar Michael KRISPER
Browse files

corrected handling of double.NaN values (FCMap)

parent 456cc372
No related branches found
Tags Build/v0.7.1.2108
No related merge requests found
......@@ -50,7 +50,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
{
return data.GetValues<SI>(field).Max();
}
public static SI Average(this IModalDataWriter data, ModalResultField field, Func<SI, bool> filter = null)
{
return data.GetValues<SI>(field).Average(filter);
......@@ -68,7 +68,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data
public static SI Average(this IEnumerable<SI> self, Func<SI, bool> filter = null)
{
var values = self.Where(filter ?? (x => x != null)).ToList();
var values = self.Where(filter ?? (x => x != null && !double.IsNaN(x.Value()))).ToList();
return values.Any() ? values.Sum() / values.Count : null;
}
......
......@@ -10,15 +10,11 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
protected override IResponse DoSimulationStep()
{
var dt = 1.SI<Second>();
var response = CyclePort.Request(AbsTime, dt);
if (response is ResponseCycleFinished) {
return response;
}
AbsTime = AbsTime + dt;
return response;
}
......
using System;
using System.Data;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TUGraz.VectoCore.FileIO.Reader;
using TUGraz.VectoCore.FileIO.Reader.Impl;
......@@ -23,7 +24,8 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle
public void TestEngineOnlyDrivingCycle()
{
var data = DrivingCycleDataReader.ReadFromFileEngineOnly(TestContext.DataRow["CycleFile"].ToString());
var cycle = new MockDrivingCycle(null, data);
var container = new VehicleContainer(null, null);
var cycle = new MockDrivingCycle(container, data);
var expectedResults = ModalResults.ReadFromFile(TestContext.DataRow["ModalResultFile"].ToString());
var vehicle = new VehicleContainer();
......@@ -68,24 +70,22 @@ namespace TUGraz.VectoCore.Tests.Integration.EngineOnlyCycle
if (i > 2) {
for (var j = 0; j < results.Length; j++) {
var field = results[j];
Assert.AreEqual((double)row[field.GetName()], dataWriter.GetDouble(field),
0.0001, string.Format("t: {0} field: {1}", i, field));
Assert.AreEqual(row.Field<SI>(field.GetName()).Value(), dataWriter.Field<SI>(field).Value(), 0.0001,
string.Format("t: {0} field: {1}", i, field));
}
if (row[ModalResultField.FCMap.GetName()] is double &&
!double.IsNaN(double.Parse(row[ModalResultField.FCMap.GetName()].ToString()))) {
Assert.AreEqual((double)row[ModalResultField.FCMap.GetName()],
dataWriter.GetDouble(ModalResultField.FCMap), 0.01,
"t: {0} field: {1}", i, ModalResultField.FCMap);
if (double.IsNaN(row.Field<SI>(ModalResultField.FCMap.GetName()).Value())) {
Assert.IsTrue(double.IsNaN(dataWriter.Field<SI>(ModalResultField.FCMap).Value()));
} else {
Assert.IsTrue(double.IsNaN(dataWriter.GetDouble(ModalResultField.FCMap)),
string.Format("t: {0}", i));
Assert.AreEqual(row.Field<SI>(ModalResultField.FCMap.GetName()).Value(),
dataWriter.Field<SI>(ModalResultField.FCMap).Value(),
0.01, "t: {0} field: {1}", i, ModalResultField.FCMap);
}
}
dataWriter.CommitSimulationStep(absTime, dt);
absTime += dt;
}
dataWriter.Data.WriteToFile(string.Format("result_{0}.csv", TestContext.DataRow["TestName"].ToString()));
dataWriter.Data.WriteToFile(string.Format("result_{0}.csv", TestContext.DataRow["TestName"]));
}
[TestMethod]
......
using System.IO;
using System.Linq;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TUGraz.VectoCore.Configuration;
using TUGraz.VectoCore.Models.Simulation;
......@@ -33,7 +32,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
[TestMethod]
public void TestEngineOnly_JobRun()
{
var actual = "TestEngineOnly_JobRun-result.vmod";
var actual = @"TestData\Jobs\EngineOnlyJob_Coach Engine Only short.vmod";
var expected = @"TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly short.vmod";
var job = CreateRun(actual);
......@@ -45,7 +44,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
[TestMethod]
public void TestEngineOnly_SimulatorRun()
{
var actual = @"TestEngineOnly_SimulatorRun-result.vmod";
var actual = @"TestData\Jobs\EngineOnlyJob_Coach Engine Only short.vmod";
var expected = @"TestData\Results\EngineOnlyCycles\24tCoach_EngineOnly short.vmod";
var run = CreateRun(actual);
......@@ -82,13 +81,18 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation
jobContainer.AddRuns(runsFactory);
jobContainer.Execute();
ResultFileHelper.TestSumFile(@"TestData\Results\EngineOnlyCycles\24t Coach.vsum",
@"TestData\Jobs\24t Coach.vsum");
ResultFileHelper.TestSumFile(@"TestData\Results\EngineOnlyCycles\24t Coach.vsum", @"24t Coach.vsum");
ResultFileHelper.TestModFiles(new[] {
@"TestData\Results\EngineOnlyCycles\24t Coach_Engine Only1.vmod",
@"TestData\Results\EngineOnlyCycles\24t Coach_Engine Only2.vmod",
@"TestData\Results\EngineOnlyCycles\24t Coach_Engine Only3.vmod"
}, new[] { "24t Coach_Engine Only1.vmod", "24t Coach_Engine Only2.vmod", "24t Coach_Engine Only3.vmod" });
}, new[] {
@"TestData\Jobs\24t Coach EngineOnly_Engine Only1.vmod",
@"TestData\Jobs\24t Coach EngineOnly_Engine Only2.vmod",
@"TestData\Jobs\24t Coach EngineOnly_Engine Only3.vmod"
})
;
}
}
}
\ No newline at end of file
......@@ -72,9 +72,9 @@ namespace TUGraz.VectoCore.Tests.Utils
CommitSimulationStep();
}
public double GetDouble(ModalResultField key)
public T Field<T>(ModalResultField key)
{
return CurrentRow.Field<double>(key.GetName());
return CurrentRow.Field<T>(key.GetName());
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment