From 1433e631c3a5a307047673c1f8898c349fd8a930 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Thu, 15 Oct 2015 08:52:37 +0200
Subject: [PATCH] additional testcase for idel controlelr

---
 .../CombustionEngineTest.cs                   | 60 +++++++++++++++++++
 1 file changed, 60 insertions(+)

diff --git a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
index 577cc66758..7a52652f53 100644
--- a/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
+++ b/VectoCoreTest/Models/SimulationComponent/CombustionEngineTest.cs
@@ -391,6 +391,66 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
 			//dataWriter.Finish();
 		}
 
+		[TestMethod]
+		public void EngineIdleControllerTest2Truck()
+		{
+			VehicleContainer container;
+			CombustionEngine engine;
+			ITnOutPort requestPort;
+			VehicleContainer(TruckEngine, out container, out engine, out requestPort);
+
+			//var dataWriter = new ModalDataWriter("EngienIdle.vmod");
+			//container.DataWriter = dataWriter;
+
+			var absTime = 0.SI<Second>();
+			var dt = Constants.SimulationSettings.TargetTimeInterval;
+
+			var angularVelocity = 95.5596.SI<PerSecond>();
+			var torque = (engine.Data.FullLoadCurve.DragLoadStationaryPower(angularVelocity) - 5000.SI<Watt>()) / angularVelocity;
+
+			var response = requestPort.Initialize(torque, angularVelocity);
+			Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
+
+			response = requestPort.Request(absTime, dt, torque, angularVelocity);
+			Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
+			Assert.AreEqual(-14829.79713, response.EnginePowerRequest.Value(), Tolerance);
+			container.CommitSimulationStep(absTime, dt);
+			absTime += dt;
+
+			var engineSpeed = new PerSecond[] {
+				1680.RPMtoRad(), 1680.RPMtoRad(), 1467.014.RPMtoRad(), 1272.8658.RPMtoRad(), 1090.989.RPMtoRad(),
+				915.3533.RPMtoRad(), 738.599.RPMtoRad(), 560.RPMtoRad(), 560.RPMtoRad(), 560.RPMtoRad(), 560.RPMtoRad(),
+				560.RPMtoRad(), 560.RPMtoRad(), 560.RPMtoRad(), 560.RPMtoRad(), 560.RPMtoRad(), 560.RPMtoRad(), 560.RPMtoRad(),
+				560.RPMtoRad()
+			};
+			var enginePower = new Watt[] {
+				5000.SI<Watt>(), 5000.SI<Watt>(), -32832.8834.SI<Watt>(), -25025.1308.SI<Watt>(), -19267.0360.SI<Watt>(),
+				-14890.1962.SI<Watt>(), -11500.7991.SI<Watt>(), -8091.0577.SI<Watt>(), 5000.SI<Watt>(), 5000.SI<Watt>(),
+				5000.SI<Watt>(), 5000.SI<Watt>(), 5000.SI<Watt>(), 5000.SI<Watt>(), 5000.SI<Watt>(), 5000.SI<Watt>(),
+				5000.SI<Watt>(), 5000.SI<Watt>(), 5000.SI<Watt>(), 5000.SI<Watt>()
+			};
+
+			var engSpeedResults = new List<dynamic>();
+			torque = 0.SI<NewtonMeter>();
+			for (var i = 0; i < engineSpeed.Count(); i++) {
+				response = requestPort.Request(absTime, dt, torque, null);
+				Assert.IsInstanceOfType(response, typeof(ResponseSuccess));
+
+				container.CommitSimulationStep(absTime, dt);
+
+				engSpeedResults.Add(new {
+					absTime,
+					engine.PreviousState.EngineSpeed,
+					engine.PreviousState.EnginePower
+				});
+				//Assert.AreEqual(engineSpeed[i].Value(), engine.PreviousState.EngineSpeed.Value(), Tolerance);
+				//Assert.AreEqual(enginePower[i].Value(), engine.PreviousState.EnginePower.Value(), Tolerance);
+
+				absTime += dt;
+			}
+			//dataWriter.Finish();
+		}
+
 		[TestMethod, Ignore]
 		public void TestWriteToFile()
 		{
-- 
GitLab