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 2694faa2 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

new testcase for declarationdatareader,

parent a84bd712
No related branches found
No related tags found
No related merge requests found
Showing
with 153 additions and 18 deletions
......@@ -24,10 +24,5 @@ namespace TUGraz.VectoCore.FileIO
data = JsonConvert.DeserializeAnonymousType(jsonStr, data);
return new VersionInfo { SavedInDeclarationMode = data.Body.SavedInDeclMode, Version = data.Header.FileVersion };
}
protected T Deserialize<T>(string json)
{
return JsonConvert.DeserializeObject<T>(json);
}
}
}
\ No newline at end of file
......@@ -7,7 +7,7 @@ namespace TUGraz.VectoCore.FileIO
[JsonProperty(Required = Required.Always)] public string AppVersion;
[JsonProperty(Required = Required.Always)] public string CreatedBy;
[JsonProperty(Required = Required.Always)] public string Date;
[JsonProperty(Required = Required.Always)] public double FileVersion;
[JsonProperty(Required = Required.Always)] public uint FileVersion;
#region Equality members
......@@ -28,7 +28,7 @@ namespace TUGraz.VectoCore.FileIO
if (obj.GetType() != GetType()) {
return false;
}
return Equals((JsonDataHeader) obj);
return Equals((JsonDataHeader)obj);
}
public override int GetHashCode()
......
......@@ -125,7 +125,7 @@ namespace TUGraz.VectoCore.FileIO.Reader.DataObjectAdaper
TwinTyres = axleInput.TwinTyres,
RollResistanceCoefficient = axleInput.RollResistanceCoefficient,
TyreTestLoad = axleInput.TyreTestLoad.SI<Newton>(),
Inertia = DeclarationData.Wheels.Lookup(axleInput.WheelsStr).Inertia,
Inertia = DeclarationData.Wheels.Lookup(axleInput.WheelsStr.Replace(" ", "")).Inertia,
};
retVal.AxleData.Add(axle);
}
......@@ -149,7 +149,7 @@ namespace TUGraz.VectoCore.FileIO.Reader.DataObjectAdaper
retVal.Inertia = DeclarationData.Engine.EngineInertia(retVal.Displacement);
retVal.FullLoadCurve = EngineFullLoadCurve.ReadFromFile(Path.Combine(engine.BasePath, engine.Body.FullLoadCurve),
true);
retVal.FullLoadCurve.EngineData = retVal;
return retVal;
}
......@@ -190,7 +190,7 @@ namespace TUGraz.VectoCore.FileIO.Reader.DataObjectAdaper
TorqueConverterActive = false
};
} else {
var fullLoad = !String.IsNullOrEmpty(gearSettings.FullLoadCurve) && gearSettings.FullLoadCurve.Equals("<NOFILE>")
var fullLoad = !String.IsNullOrEmpty(gearSettings.FullLoadCurve) && !gearSettings.FullLoadCurve.Equals("<NOFILE>")
? GearFullLoadCurve.ReadFromFile(Path.Combine(gearbox.BasePath, gearSettings.FullLoadCurve))
: null;
var shiftPolygon = DeclarationData.Gearbox.ComputeShiftPolygon(fullLoad, engine);
......
......@@ -131,7 +131,7 @@ namespace TUGraz.VectoCore.FileIO.Reader.DataObjectAdaper
retVal.Inertia = engine.Body.Inertia.SI<KilogramSquareMeter>();
retVal.FullLoadCurve = EngineFullLoadCurve.ReadFromFile(Path.Combine(engine.BasePath, engine.Body.FullLoadCurve),
false);
retVal.FullLoadCurve.EngineData = retVal;
return retVal;
}
......
......@@ -46,6 +46,7 @@ namespace TUGraz.VectoCore.FileIO.Reader.Impl
IsEngineOnly = IsEngineOnly,
JobFileName = Job.JobFile,
};
simulationRunData.VehicleData.VehicleClass = segment.VehicleClass;
yield return simulationRunData;
}
}
......@@ -140,7 +141,7 @@ namespace TUGraz.VectoCore.FileIO.Reader.Impl
ID = aux.ID,
Type = aux.Type,
Technology = aux.Technology,
TechList = aux.TechList.ToArray()
TechList = aux.TechList == null ? null : aux.TechList.ToArray()
}).ToArray();
}
......
......@@ -48,10 +48,10 @@ namespace TUGraz.VectoCore.Models.Declaration
public static Meter DynamicTyreRadius(string wheels, string rims)
{
var wheelsEntry = Wheels.Lookup(wheels);
var wheelsEntry = Wheels.Lookup(wheels.Replace(" ", ""));
var rimsEntry = Rims.Lookup(rims);
var correction = wheelsEntry.SizeClass != "a" ? rimsEntry.F_a : rimsEntry.F_b;
var correction = wheelsEntry.SizeClass != "a" ? rimsEntry.F_b : rimsEntry.F_a;
return wheelsEntry.DynamicTyreRadius * correction / (2 * Math.PI);
}
......
......@@ -17,7 +17,7 @@ namespace TUGraz.VectoCore.Models.Declaration
{
Data = (from DataRow row in table.Rows
select new WheelsEntry {
WheelType = row.Field<string>(0),
WheelType = row.Field<string>(0).Replace(" ", ""),
Inertia = row.ParseDouble(1).SI<KilogramSquareMeter>(),
DynamicTyreRadius = row.ParseDouble(2).SI().Milli.Meter.Cast<Meter>(),
SizeClass = row.Field<string>(3)
......
......@@ -15,6 +15,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data
public VehicleCategory VehicleCategory { get; internal set; }
public string VehicleClass { get; internal set; }
public CrossWindCorrectionMode CrossWindCorrectionMode { get; internal set; }
public RetarderData Retarder { get; internal set; }
......
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TUGraz.VectoCore.FileIO;
namespace TUGraz.VectoCore.Tests.FileIO
{
[TestClass]
public class JsonTest
{
[TestMethod]
public void TestJsonHeaderEquality()
{
var h1 = new JsonDataHeader {
AppVersion = "MyVecto3",
CreatedBy = "UnitTest",
Date = "1.1.1970",
FileVersion = 3
};
var h2 = new JsonDataHeader {
AppVersion = "MyVecto3",
CreatedBy = "UnitTest",
Date = "1.1.1970",
FileVersion = 3
};
Assert.AreEqual(h1, h1);
Assert.AreEqual(h1, h2);
Assert.AreNotEqual(h1, null);
Assert.AreNotEqual(h1, "hello world");
}
}
}
\ No newline at end of file
using System;
using System.IO;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TUGraz.VectoCore.FileIO.Reader.Impl;
using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.Tests.FileIO
{
[TestClass]
public class SimulationDataReaderTest
{
protected const string DeclarationJob = @"TestData\Jobs\12t Delivery Truck.vecto";
protected const double Tolerance = 0.0001;
[TestMethod]
public void ReadDeclarationJobFile()
{
var reader = new DeclarationModeSimulationDataReader();
reader.SetJobFile(DeclarationJob);
var runData = reader.NextRun().First();
Assert.AreEqual(false, runData.IsEngineOnly);
Assert.AreEqual(Path.GetFileName(DeclarationJob), runData.JobFileName);
Assert.AreEqual(5850, runData.VehicleData.CurbWeight.Value());
Assert.AreEqual(1900, runData.VehicleData.CurbWeigthExtra.Value()); // taken from segmentation table
Assert.AreEqual(11900, runData.VehicleData.GrossVehicleMassRating.Value());
Assert.AreEqual(AxleConfiguration.AxleConfig_4x2, runData.VehicleData.AxleConfiguration);
Assert.AreEqual(0.4069297458, runData.VehicleData.DynamicTyreRadius.Value(), Tolerance);
Assert.AreEqual("2", runData.VehicleData.VehicleClass);
Assert.AreEqual(2, runData.VehicleData.AxleData.Count);
Assert.AreEqual(6, runData.VehicleData.AxleData[0].Inertia.Value(), Tolerance);
Assert.AreEqual(true, runData.DriverData.LookAheadCoasting.Enabled);
Assert.AreEqual(DeclarationData.Driver.LookAhead.MinimumSpeed.Value(),
runData.DriverData.LookAheadCoasting.MinSpeed.Value(), Tolerance);
Assert.AreEqual(DeclarationData.Driver.LookAhead.Deceleration.Value(),
runData.DriverData.LookAheadCoasting.Deceleration.Value(), Tolerance);
Assert.AreNotEqual(DriverData.DriverMode.Off, runData.DriverData.OverSpeedEcoRoll.Mode);
Assert.AreEqual(DeclarationData.Driver.OverSpeedEcoRoll.MinSpeed.Value(),
runData.DriverData.OverSpeedEcoRoll.MinSpeed.Value(), Tolerance);
Assert.AreEqual(DeclarationData.Driver.OverSpeedEcoRoll.OverSpeed.Value(),
runData.DriverData.OverSpeedEcoRoll.OverSpeed.Value(), Tolerance);
Assert.AreEqual(DeclarationData.Driver.OverSpeedEcoRoll.UnderSpeed.Value(),
runData.DriverData.OverSpeedEcoRoll.UnderSpeed.Value(), Tolerance);
//Assert.AreEqual(false, runData.DriverData.StartStop.Enabled);
Assert.AreEqual(DeclarationData.Driver.StartStop.Delay.Value(), runData.DriverData.StartStop.Delay.Value(), Tolerance);
Assert.AreEqual(DeclarationData.Driver.StartStop.MaxSpeed.Value(), runData.DriverData.StartStop.MaxSpeed.Value(),
Tolerance);
Assert.AreEqual(DeclarationData.Driver.StartStop.MinTime.Value(), runData.DriverData.StartStop.MinTime.Value(),
Tolerance);
Assert.AreEqual(3.7890, runData.EngineData.Inertia.Value());
var downshiftSpeeds = new double[] { 600, 600, 1310.6673 };
var downshiftTorque = new double[] { 0, 266.85346, 899 };
Assert.AreEqual(downshiftSpeeds.Length, runData.GearboxData[1].ShiftPolygon.Downshift.Count);
for (var i = 0; i < downshiftSpeeds.Length; i++) {
Assert.AreEqual(downshiftSpeeds[i].RPMtoRad().Value(),
runData.GearboxData[1].ShiftPolygon.Downshift[i].AngularSpeed.Value(), Tolerance);
Assert.AreEqual(downshiftTorque[i], runData.GearboxData[1].ShiftPolygon.Downshift[i].Torque.Value(), Tolerance);
}
var upshiftSpeed = new double[] { 1531.230044, 1531.230044, 2420.505793661 };
var upshiftTorque = new double[] { 0, 459.8588, 899 };
Assert.AreEqual(upshiftSpeed.Length, runData.GearboxData[1].ShiftPolygon.Downshift.Count);
for (var i = 0; i < downshiftSpeeds.Length; i++) {
Assert.AreEqual(upshiftSpeed[i].RPMtoRad().Value(),
runData.GearboxData[1].ShiftPolygon.Upshift[i].AngularSpeed.Value(), Tolerance);
Assert.AreEqual(upshiftTorque[i], runData.GearboxData[1].ShiftPolygon.Upshift[i].Torque.Value(), Tolerance);
}
//Assert.AreEqual();
//Assert.AreEqual(, runData.DriverData.LookAheadCoasting.);
}
}
}
\ No newline at end of file
......@@ -15,7 +15,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
private const string ResourceNamespace = "TUGraz.VectoCore.Resources.Declaration.";
[TestMethod]
[TestMethod, Ignore]
public void CycleAltitudeTest()
{
var missionType = "LongHaul";
......
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TUGraz.VectoCore.Exceptions;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
using TUGraz.VectoCore.Tests.Utils;
using TUGraz.VectoCore.Utils;
......@@ -71,6 +72,19 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
Assert.AreEqual(0.37, fldCurve.PT1(1700.RPMtoRad()).Value(), Tolerance);
}
[TestMethod]
public void TestPreferredSpeed()
{
var fldCurve = EngineFullLoadCurve.ReadFromFile(CoachEngineFLD);
fldCurve.EngineData = new CombustionEngineData() { IdleSpeed = 560.RPMtoRad() };
Assert.AreEqual(130.691151551712, fldCurve.PreferredSpeed.Value(), Tolerance);
Assert.AreEqual(194.515816596908, fldCurve.N95hSpeed.Value(), Tolerance);
Assert.AreEqual(94.2463966015023, fldCurve.LoSpeed.Value(), Tolerance);
Assert.AreEqual(219.084329211505, fldCurve.HiSpeed.Value(), Tolerance);
Assert.AreEqual(2300, fldCurve.MaxLoadTorque.Value(), Tolerance);
Assert.AreEqual(-320, fldCurve.MaxDragTorque.Value(), Tolerance);
}
/// <summary>
/// [VECTO-78]
/// </summary>
......
......@@ -28,7 +28,7 @@
"Axles": [
{
"Inertia": 6.0,
"Wheels": "245/70 R 19.5",
"Wheels": "245/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": false,
"RRCISO": 0.008343465,
......@@ -36,7 +36,7 @@
},
{
"Inertia": 6.0,
"Wheels": "245/70 R 19.5",
"Wheels": "245/70 R19.5",
"AxleWeightShare": 0.0,
"TwinTyres": true,
"RRCISO": 0.00943769,
......
......@@ -52,6 +52,10 @@ namespace TUGraz.VectoCore.Tests.Utils
Assert.IsTrue(siStandardDiv.HasEqualUnit(new SI()));
Assert.AreEqual(600.0 / 60 * 2 * Math.PI * 1500 * 1500, siStandardMult.Value());
var force = torque / 100.SI<Meter>();
Assert.IsInstanceOfType(force, typeof(Newton));
Assert.AreEqual(15, force.Value());
//add
var angularVelocity2 = 400.SI<RoundsPerMinute>().Cast<PerSecond>();
......
......@@ -70,6 +70,8 @@
</Choose>
<ItemGroup>
<Compile Include="Exceptions\ExceptionTests.cs" />
<Compile Include="FileIO\JsonTest.cs" />
<Compile Include="FileIO\SimulationDataReaderTest.cs" />
<Compile Include="Integration\EngineOnlyCycle\EngineOnlyCycleTest.cs" />
<Compile Include="Integration\SimulationRuns\MinimalPowertrain.cs" />
<Compile Include="Models\Declaration\DeclarationDataTest.cs" />
......
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