Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

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

corrected gearbox tests

parent 8c5c11b3
Branches
Tags
No related merge requests found
...@@ -313,7 +313,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -313,7 +313,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
return dryRunResponse; return dryRunResponse;
} }
var shiftAllowed = !inEngineSpeed.IsEqual(0) && !DataBus.VehicleSpeed.IsEqual(0) && absTime.IsGreater(0); var shiftAllowed = !inEngineSpeed.IsEqual(0) && !DataBus.VehicleSpeed.IsEqual(0);
if (shiftAllowed) { if (shiftAllowed) {
var shiftRequired = _strategy.ShiftRequired(absTime, dt, outTorque, outAngularVelocity, inTorque, inEngineSpeed, var shiftRequired = _strategy.ShiftRequired(absTime, dt, outTorque, outAngularVelocity, inTorque, inEngineSpeed,
......
...@@ -240,7 +240,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ...@@ -240,7 +240,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
// normal shift when all requirements are fullfilled ------------------ // normal shift when all requirements are fullfilled ------------------
var minimumShiftTimePassed = (lastShiftTime + Data.ShiftTime).IsSmaller(absTime); var minimumShiftTimePassed = (lastShiftTime + Data.ShiftTime).IsSmallerOrEqual(absTime);
if (!minimumShiftTimePassed) { if (!minimumShiftTimePassed) {
return false; return false;
} }
......
...@@ -10,11 +10,13 @@ namespace TUGraz.VectoCore.Utils ...@@ -10,11 +10,13 @@ namespace TUGraz.VectoCore.Utils
/// </summary> /// </summary>
/// <param name="d"></param> /// <param name="d"></param>
/// <returns></returns> /// <returns></returns>
[DebuggerHidden]
public static PerSecond RPMtoRad(this int d) public static PerSecond RPMtoRad(this int d)
{ {
return d.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>(); return d.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>();
} }
[DebuggerHidden]
public static MeterPerSecond KMPHtoMeterPerSecond(this int d) public static MeterPerSecond KMPHtoMeterPerSecond(this int d)
{ {
return d.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(); return d.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>();
...@@ -22,8 +24,9 @@ namespace TUGraz.VectoCore.Utils ...@@ -22,8 +24,9 @@ namespace TUGraz.VectoCore.Utils
/// <summary> /// <summary>
/// Gets the SI representation of the number (unit-less). /// Gets the unit-less SI representation of the number.
/// </summary> /// </summary>
[DebuggerHidden]
public static SI SI(this int value) public static SI SI(this int value)
{ {
return new SI(value); return new SI(value);
......
using System.IO; using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TUGraz.VectoCore.FileIO.Reader;
using TUGraz.VectoCore.Models.Connector.Ports.Impl; using TUGraz.VectoCore.Models.Connector.Ports.Impl;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.Tests.Integration; using TUGraz.VectoCore.Tests.Integration;
using TUGraz.VectoCore.Tests.Utils; using TUGraz.VectoCore.Tests.Utils;
using TUGraz.VectoCore.Utils; using TUGraz.VectoCore.Utils;
...@@ -23,7 +20,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent ...@@ -23,7 +20,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var container = Truck40tPowerTrain.CreatePowerTrain(cycle, "Gearbox_Initialize.vmod", 7500.0.SI<Kilogram>(), var container = Truck40tPowerTrain.CreatePowerTrain(cycle, "Gearbox_Initialize.vmod", 7500.0.SI<Kilogram>(),
0.SI<Kilogram>()); 0.SI<Kilogram>());
var retVal = container.Cycle.Initialize(); var retVal = container.Cycle.Initialize();
Assert.AreEqual(5u, container.Gear); Assert.AreEqual(4u, container.Gear);
Assert.IsInstanceOfType(retVal, typeof(ResponseSuccess)); Assert.IsInstanceOfType(retVal, typeof(ResponseSuccess));
AssertHelper.AreRelativeEqual(560.RPMtoRad(), container.EngineSpeed); AssertHelper.AreRelativeEqual(560.RPMtoRad(), container.EngineSpeed);
...@@ -97,6 +94,5 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent ...@@ -97,6 +94,5 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
container.CommitSimulationStep(absTime, retVal.SimulationInterval); container.CommitSimulationStep(absTime, retVal.SimulationInterval);
absTime += retVal.SimulationInterval; absTime += retVal.SimulationInterval;
} }
} }
} }
\ No newline at end of file
...@@ -115,14 +115,14 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent ...@@ -115,14 +115,14 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var gearboxData = DeclarationModeSimulationDataReader.CreateGearboxDataFromFile(GearboxDataFile, EngineDataFile); var gearboxData = DeclarationModeSimulationDataReader.CreateGearboxDataFromFile(GearboxDataFile, EngineDataFile);
var container = new VehicleContainer(); var container = new VehicleContainer();
var gearbox = new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)); var gearbox = new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container));
gearbox.Gear = 1;
var ratio = 6.38;
var driver = new MockDriver(container); var driver = new MockDriver(container);
var port = new MockTnOutPort(); var port = new MockTnOutPort();
gearbox.InPort().Connect(port); gearbox.InPort().Connect(port);
container.Engine = port; container.Engine = port;
gearbox.Initialize(0.SI<NewtonMeter>(), 0.RPMtoRad());
var ratio = 6.38;
var absTime = 0.SI<Second>(); var absTime = 0.SI<Second>();
var dt = 2.SI<Second>(); var dt = 2.SI<Second>();
var t = 2600.SI<NewtonMeter>(); var t = 2600.SI<NewtonMeter>();
...@@ -148,13 +148,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent ...@@ -148,13 +148,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var container = new VehicleContainer(); var container = new VehicleContainer();
var gearboxData = DeclarationModeSimulationDataReader.CreateGearboxDataFromFile(GearboxDataFile, EngineDataFile); var gearboxData = DeclarationModeSimulationDataReader.CreateGearboxDataFromFile(GearboxDataFile, EngineDataFile);
var gearbox = new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)); var gearbox = new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container));
var driver = new MockDriver(container); var driver = new MockDriver(container);
var port = new MockTnOutPort(); var port = new MockTnOutPort();
gearbox.InPort().Connect(port); gearbox.InPort().Connect(port);
container.Engine = port; container.Engine = port;
gearbox.Gear = 1;
gearbox.Initialize(0.SI<NewtonMeter>(), 0.RPMtoRad());
var ratio = 6.38; var ratio = 6.38;
...@@ -167,8 +167,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent ...@@ -167,8 +167,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
foreach (var exp in expected) { foreach (var exp in expected) {
var torque = exp.t.SI<NewtonMeter>() * ratio; var torque = exp.t.SI<NewtonMeter>() * ratio;
var angularVelocity = exp.n.RPMtoRad() / ratio; var angularVelocity = exp.n.RPMtoRad() / ratio;
var response = gearbox.OutPort().Request(0.SI<Second>(), 1.SI<Second>(), torque, angularVelocity); var response = gearbox.OutPort().Request(0.SI<Second>(), 1.SI<Second>(), torque, angularVelocity);
Assert.IsInstanceOfType(response, typeof(ResponseSuccess)); Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
} }
...@@ -262,6 +262,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent ...@@ -262,6 +262,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var driver = new MockDriver(container); var driver = new MockDriver(container);
var port = new MockTnOutPort(); var port = new MockTnOutPort();
gearbox.InPort().Connect(port); gearbox.InPort().Connect(port);
var vehicle = new MockVehicle(container) { MyVehicleSpeed = 10.SI<MeterPerSecond>() };
container.Engine = port; container.Engine = port;
var ratios = new[] { 0.0, 6.38, 4.63, 3.44, 2.59, 1.86, 1.35, 1, 0.76 }; var ratios = new[] { 0.0, 6.38, 4.63, 3.44, 2.59, 1.86, 1.35, 1, 0.76 };
...@@ -276,16 +277,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent ...@@ -276,16 +277,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
new { gear = 3, newGear = 2, t = 1500, n = 750, responseType = typeof(ResponseGearShift) }, new { gear = 3, newGear = 2, t = 1500, n = 750, responseType = typeof(ResponseGearShift) },
new { gear = 2, newGear = 1, t = 1500, n = 750, responseType = typeof(ResponseGearShift) }, new { gear = 2, newGear = 1, t = 1500, n = 750, responseType = typeof(ResponseGearShift) },
new { gear = 1, newGear = 1, t = 1200, n = 700, responseType = typeof(ResponseSuccess) }, new { gear = 1, newGear = 1, t = 1200, n = 700, responseType = typeof(ResponseSuccess) },
new { gear = 8, newGear = 1, t = 10000, n = 120, responseType = typeof(ResponseGearShift) } new { gear = 8, newGear = 1, t = 15000, n = 50, responseType = typeof(ResponseGearShift) }
}; };
var absTime = 0.SI<Second>(); var absTime = 0.SI<Second>();
var dt = 2.SI<Second>(); var dt = 2.SI<Second>();
gearbox.OutPort().Initialize(0.SI<NewtonMeter>(), 0.SI<PerSecond>()); gearbox.OutPort().Initialize(1.SI<NewtonMeter>(), 1.SI<PerSecond>());
// just for test case mock driver
driver.VehicleStopped = false;
foreach (var exp in expected) { foreach (var exp in expected) {
var expectedT = exp.t.SI<NewtonMeter>(); var expectedT = exp.t.SI<NewtonMeter>();
...@@ -313,6 +311,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent ...@@ -313,6 +311,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var gearboxData = DeclarationModeSimulationDataReader.CreateGearboxDataFromFile(GearboxDataFile, EngineDataFile); var gearboxData = DeclarationModeSimulationDataReader.CreateGearboxDataFromFile(GearboxDataFile, EngineDataFile);
var gearbox = new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container)); var gearbox = new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container));
var driver = new MockDriver(container); var driver = new MockDriver(container);
var vehicle = new MockVehicle(container) { MyVehicleSpeed = 10.SI<MeterPerSecond>() };
var port = new MockTnOutPort(); var port = new MockTnOutPort();
container.Engine = port; container.Engine = port;
gearbox.InPort().Connect(port); gearbox.InPort().Connect(port);
...@@ -335,8 +334,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent ...@@ -335,8 +334,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var absTime = 0.SI<Second>(); var absTime = 0.SI<Second>();
var dt = 2.SI<Second>(); var dt = 2.SI<Second>();
gearbox.OutPort().Initialize(1000.SI<NewtonMeter>(), 100.SI<PerSecond>()); gearbox.OutPort().Initialize(1.SI<NewtonMeter>(), 1.SI<PerSecond>());
var first = gearbox.OutPort().Request(absTime, dt, 1000.SI<NewtonMeter>(), 100.SI<PerSecond>());
absTime += dt; absTime += dt;
foreach (var exp in expected) { foreach (var exp in expected) {
var expectedT = exp.t.SI<NewtonMeter>(); var expectedT = exp.t.SI<NewtonMeter>();
...@@ -356,49 +355,5 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent ...@@ -356,49 +355,5 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
absTime += dt; absTime += dt;
} }
} }
[TestMethod]
public void Gearbox_NoGear()
{
var container = new VehicleContainer();
var gearboxData = CreateGearboxData();
var gearbox = new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container));
var driver = new MockDriver(container);
var port = new MockTnOutPort();
container.Engine = (IEngineInfo)port;
gearbox.InPort().Connect(port);
gearbox.Initialize(0.SI<NewtonMeter>(), 0.SI<PerSecond>());
var absTime = 0.SI<Second>();
var dt = 2.SI<Second>();
//just for test driver
driver.VehicleStopped = true;
var response = gearbox.OutPort().Request(absTime, dt, 50.SI<NewtonMeter>(), 1000000.RPMtoRad());
Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
AssertHelper.AreRelativeEqual(absTime, port.AbsTime);
AssertHelper.AreRelativeEqual(dt, port.Dt);
Assert.IsNotNull(port.AngularVelocity);
Assert.IsNotNull(port.Torque);
Assert.IsTrue(port.AngularVelocity.IsGreater(0));
Assert.IsTrue(port.Torque.IsGreater(0));
port.DoCommitSimulationStep();
driver.VehicleStopped = false;
absTime += dt;
response = gearbox.OutPort().Request(absTime, dt, 5000.SI<NewtonMeter>(), 100.SI<PerSecond>());
Assert.IsInstanceOfType(response, typeof(ResponseGearShift));
Assert.IsNull(port.AbsTime);
Assert.IsNull(port.Dt);
Assert.IsNull(port.AngularVelocity);
Assert.IsNull(port.Torque);
}
} }
} }
\ No newline at end of file
...@@ -86,7 +86,7 @@ namespace TUGraz.VectoCore.Tests.Utils ...@@ -86,7 +86,7 @@ namespace TUGraz.VectoCore.Tests.Utils
public DrivingBehavior DrivingBehavior public DrivingBehavior DrivingBehavior
{ {
get { throw new NotImplementedException(); } get { return DrivingBehavior.Accelerating; }
} }
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment