diff --git a/VECTO/GUI/F_MAINForm.vb b/VECTO/GUI/F_MAINForm.vb index 1b1dc30088d35034a62b059810b0c3e40fe36da7..07a496cb5229f3c2a32bff293c641f093b6a9955 100644 --- a/VECTO/GUI/F_MAINForm.vb +++ b/VECTO/GUI/F_MAINForm.vb @@ -495,6 +495,7 @@ Imports System.Threading ModeUpdate() 'License check + 'TODO uncomment license check If False And Not Lic.LICcheck() Then MsgBox("License File invalid!" & vbCrLf & vbCrLf & Lic.FailMsg) If Lic.CreateActFile(MyAppPath & "ActivationCode.dat") Then @@ -549,36 +550,25 @@ Imports System.Threading End Sub Private Sub VectoWorkerV3_OnProgressChanged(sender As Object, e As ProgressChangedEventArgs) - Dim x As cWorkProg - x = e.UserState + Dim progress As cWorkProg + progress = e.UserState - Select Case x.Target + Select Case progress.Target Case tWorkMsgType.StatusListBox - MSGtoForm(e.UserState.ID, e.UserState.Msg, x.Source, x.Link) - - Case tWorkMsgType.StatusBar - Status(e.UserState.Msg) + MSGtoForm(e.UserState.ID, e.UserState.Msg, progress.Source, progress.Link) Case tWorkMsgType.ProgBars - Me.ToolStripProgBarOverall.Value = e.ProgressPercentage + ToolStripProgBarOverall.Value = e.ProgressPercentage ProgSecStart() - Case tWorkMsgType.JobStatus - CheckedItems(x.FileIndex).SubItems(1).Text = x.Msg - SetCheckedItemColor(x.FileIndex, x.Status) - - Case tWorkMsgType.CycleStatus - Try - Me.LvDRI.CheckedItems(x.FileIndex).SubItems(1).Text = x.Msg - Catch ex As Exception - End Try - Case tWorkMsgType.InitProgBar - Me.ToolStripProgBarOverall.Style = ProgressBarStyle.Continuous + ToolStripProgBarOverall.Style = ProgressBarStyle.Continuous Case Else ' tWorkMsgType.Abort - JobAbort() - + Button2.Enabled = False + Button2.Text = "Aborting..." + Button2.Image = My.Resources.Play_icon_gray + VECTOworkerV3.CancelAsync() End Select End Sub diff --git a/VectoConsole/App.config b/VectoConsole/App.config index b9fc82b72b412787b48895da9c5ccb501157bd12..6fcb136b5b1185acd8953c27c12e358dec9102dc 100644 --- a/VectoConsole/App.config +++ b/VectoConsole/App.config @@ -1,23 +1,25 @@ <?xml version="1.0" encoding="utf-8"?> + <configuration> - <configSections> - <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" /> - </configSections> - <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> - </startup> - <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" - autoReload="true" - throwExceptions="false" - internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" > - <targets> - <target xsi:type="Console" name="ConsoleLogger" error="true" /> - <target xsi:type="File" name="LogFile" fileName="${basedir}/logs/log.txt" layout="${longdate} [${processid}@${machinename}] ${callsite} ${level:uppercase=true}: ${message}" /> - </targets> - <rules> - <logger name="*" minlevel="Info" writeTo="LogFile" /> - </rules> - </nlog> + <configSections> + <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" /> + </configSections> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> + </startup> + <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" + autoReload="true" + throwExceptions="false" + internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> + <targets> + <target xsi:type="Console" name="ConsoleLogger" error="true" /> + <target xsi:type="File" name="LogFile" fileName="${basedir}/logs/log.txt" + layout="${longdate} [${processid}:${threadid}@${machinename}] ${callsite} ${level:uppercase=true}: ${message}" /> + </targets> + <rules> + <logger name="*" minlevel="Info" writeTo="LogFile" /> + </rules> + </nlog> </configuration> \ No newline at end of file diff --git a/VectoConsole/Program.cs b/VectoConsole/Program.cs index 1a4404f5d8b76ff7442a8da912bc328dfdc4771d..a9f52003080dff0056a83759084e757799d5c0ff 100644 --- a/VectoConsole/Program.cs +++ b/VectoConsole/Program.cs @@ -1,7 +1,10 @@ using System; +using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; +using System.Runtime.Remoting.Channels; +using System.Threading; using NLog; using NLog.Config; using TUGraz.VectoCore.Configuration; @@ -12,6 +15,9 @@ namespace VectoConsole { internal static class Program { + private static int NumLines; + private static int ProgessCounter { get; set; } + private const string USAGE = @"Usage: vecto.exe [-h] [-v] FILE1.vecto [FILE2.vecto ...]"; private const string HELP = @" @@ -82,12 +88,29 @@ Examples: var sumWriter = new SummaryFileWriter(sumFileName); var jobContainer = new JobContainer(sumWriter); + Console.WriteLine("Reading Job Files"); foreach (var file in fileList.Where(f => Path.GetExtension(f) == Constants.FileExtensions.VectoJobFile)) { - var runsFactory = new SimulatorFactory(SimulatorFactory.FactoryMode.EngineeringMode, file); + var runsFactory = new SimulatorFactory(SimulatorFactory.FactoryMode.DeclarationMode, file); jobContainer.AddRuns(runsFactory); } + Console.WriteLine("Starting simulation runs"); jobContainer.Execute(); + + Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) => { + var isCtrlC = e.SpecialKey == ConsoleSpecialKey.ControlC; + var isCtrlBreak = e.SpecialKey == ConsoleSpecialKey.ControlBreak; + + if (isCtrlC) { + Console.WriteLine("Canceling simulation!"); + } + }; + + //var x = Console.CursorLeft; + while (!jobContainer.AllCompleted) { + PrintProgress(jobContainer.GetProgress()); + Thread.Sleep(250); + } } catch (Exception e) { Console.Error.WriteLine(e.Message); Trace.TraceError(e.ToString()); @@ -95,5 +118,22 @@ Examples: } return Environment.ExitCode; } + + private static void PrintProgress(Dictionary<string, double> progessData) + { + Console.SetCursorPosition(0, Console.CursorTop - NumLines); + NumLines = 0; + var sumProgress = 0.0; + foreach (var progress in progessData) { + Console.WriteLine(string.Format("{0,-60} {1,8:P}", progress.Key, progress.Value)); + sumProgress += progress.Value; + NumLines++; + } + sumProgress /= NumLines; + var spinner = "/-\\|"[ProgessCounter++ % 4]; + var bar = new string('#', (int)(sumProgress * 100.0 / 2)); + Console.WriteLine(string.Format(" {2} [{1,-50}] [{0,6:P}]", sumProgress, bar, spinner)); + NumLines++; + } } } \ No newline at end of file diff --git a/VectoCore/FileIO/Reader/DrivingCycleDataReader.cs b/VectoCore/FileIO/Reader/DrivingCycleDataReader.cs index e89301e83a81b221b6d945dcbb25ec7b3fb1a784..a038741817118ddfbf54fb1852f4107dd80aa482 100644 --- a/VectoCore/FileIO/Reader/DrivingCycleDataReader.cs +++ b/VectoCore/FileIO/Reader/DrivingCycleDataReader.cs @@ -245,9 +245,7 @@ namespace TUGraz.VectoCore.FileIO.Reader return table.Rows.Cast<DataRow>().Select(row => new DrivingCycleData.DrivingCycleEntry { Distance = row.ParseDouble(Fields.Distance).SI<Meter>(), VehicleTargetSpeed = - row.ParseDouble(Fields.VehicleSpeed) - .SI() - .Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(), + row.ParseDouble(Fields.VehicleSpeed).KMPHtoMeterPerSecond(), RoadGradientPercent = row.ParseDoubleOrGetDefault(Fields.RoadGradient), RoadGradient = VectoMath.InclinationToAngle(row.ParseDoubleOrGetDefault(Fields.RoadGradient) / 100.0), @@ -259,9 +257,7 @@ namespace TUGraz.VectoCore.FileIO.Reader row.ParseDoubleOrGetDefault(Fields.EngineSpeed).SI().Rounds.Per.Minute.Cast<PerSecond>(), Gear = row.ParseDoubleOrGetDefault(Fields.Gear), AirSpeedRelativeToVehicle = - row.ParseDoubleOrGetDefault(Fields.AirSpeedRelativeToVehicle) - .SI() - .Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(), + row.ParseDoubleOrGetDefault(Fields.AirSpeedRelativeToVehicle).KMPHtoMeterPerSecond(), WindYawAngle = row.ParseDoubleOrGetDefault(Fields.WindYawAngle), AuxiliarySupplyPower = AuxSupplyPowerReader.Read(row) }); @@ -316,9 +312,7 @@ namespace TUGraz.VectoCore.FileIO.Reader var entries = table.Rows.Cast<DataRow>().Select((row, index) => new DrivingCycleData.DrivingCycleEntry { Time = row.ParseDoubleOrGetDefault(Fields.Time, index).SI<Second>(), VehicleTargetSpeed = - row.ParseDouble(Fields.VehicleSpeed) - .SI() - .Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(), + row.ParseDouble(Fields.VehicleSpeed).KMPHtoMeterPerSecond(), RoadGradientPercent = row.ParseDoubleOrGetDefault(Fields.RoadGradient), RoadGradient = VectoMath.InclinationToAngle(row.ParseDoubleOrGetDefault(Fields.RoadGradient) / 100.0), @@ -328,9 +322,7 @@ namespace TUGraz.VectoCore.FileIO.Reader EngineSpeed = row.ParseDoubleOrGetDefault(Fields.EngineSpeed).SI().Rounds.Per.Minute.Cast<PerSecond>(), AirSpeedRelativeToVehicle = - row.ParseDoubleOrGetDefault(Fields.AirSpeedRelativeToVehicle) - .SI() - .Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(), + row.ParseDoubleOrGetDefault(Fields.AirSpeedRelativeToVehicle).KMPHtoMeterPerSecond(), WindYawAngle = row.ParseDoubleOrGetDefault(Fields.WindYawAngle), AuxiliarySupplyPower = AuxSupplyPowerReader.Read(row) }).ToArray(); diff --git a/VectoCore/Models/Connector/Ports/ISimulationPort.cs b/VectoCore/Models/Connector/Ports/ISimulationPort.cs index 77026657a8d436728b82122bcdd2b57c64ec6c01..a30199ffef7b5f969a9b719d6bc301e3b60c4c84 100644 --- a/VectoCore/Models/Connector/Ports/ISimulationPort.cs +++ b/VectoCore/Models/Connector/Ports/ISimulationPort.cs @@ -33,5 +33,6 @@ namespace TUGraz.VectoCore.Models.Connector.Ports IResponse Request(Second absTime, Second dt); IResponse Initialize(); + double Progress { get; } } } \ No newline at end of file diff --git a/VectoCore/Models/Simulation/Data/ModalResult.cs b/VectoCore/Models/Simulation/Data/ModalResult.cs index a45ce1996027e76b216379675fa3ae4e63fb4202..27d588e1043a9070b9f56058921de86812e093ff 100644 --- a/VectoCore/Models/Simulation/Data/ModalResult.cs +++ b/VectoCore/Models/Simulation/Data/ModalResult.cs @@ -271,6 +271,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Data /// [m] Altitude /// </summary> [ModalResultField(typeof(SI))] altitude, + + [ModalResultField(typeof(SI), name: "ds [m]")] simulationDistance } diff --git a/VectoCore/Models/Simulation/IVectoRun.cs b/VectoCore/Models/Simulation/IVectoRun.cs index f14714fdbfade715cbec59989fc9d9e029c245ee..63a7b080ad722371fc46b8d95223a5c20f7f9618 100644 --- a/VectoCore/Models/Simulation/IVectoRun.cs +++ b/VectoCore/Models/Simulation/IVectoRun.cs @@ -1,3 +1,5 @@ +using System.ComponentModel; + namespace TUGraz.VectoCore.Models.Simulation { /// <summary> @@ -8,7 +10,7 @@ namespace TUGraz.VectoCore.Models.Simulation /// <summary> /// Run the simulation. /// </summary> - void Run(); + void Run(BackgroundWorker worker = null); string Name { get; } @@ -17,5 +19,7 @@ namespace TUGraz.VectoCore.Models.Simulation /// </summary> /// <returns></returns> IVehicleContainer GetContainer(); + + bool FinishedWithoutErrors { get; } } } \ No newline at end of file diff --git a/VectoCore/Models/Simulation/Impl/DistanceRun.cs b/VectoCore/Models/Simulation/Impl/DistanceRun.cs index a4b7695ac4b36ea1e9564bd3264561e834cfce40..73f33ef975d9eab24e2295f3e9c28139013e7e47 100644 --- a/VectoCore/Models/Simulation/Impl/DistanceRun.cs +++ b/VectoCore/Models/Simulation/Impl/DistanceRun.cs @@ -36,6 +36,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl ds = r.MaxDistance; }). Case<ResponseCycleFinished>(r => { + FinishedWithoutErrors = true; Log.Info("========= Driving Cycle Finished"); }). Default(r => { diff --git a/VectoCore/Models/Simulation/Impl/JobContainer.cs b/VectoCore/Models/Simulation/Impl/JobContainer.cs index d399e270a4b35e684d1d50a27acbf416264739e5..6edded3df13b23addbd9e0bde1a9542e8d3f8e3b 100644 --- a/VectoCore/Models/Simulation/Impl/JobContainer.cs +++ b/VectoCore/Models/Simulation/Impl/JobContainer.cs @@ -1,5 +1,8 @@ +using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; +using System.Threading; using System.Threading.Tasks; using TUGraz.VectoCore.Models.Simulation.Data; @@ -14,7 +17,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// </summary> public class JobContainer : LoggingObject { - private readonly List<IVectoRun> _runs = new List<IVectoRun>(); + internal readonly List<JobEntry> Runs = new List<JobEntry>(); private readonly SummaryFileWriter _sumWriter; private static int _jobNumber; @@ -31,32 +34,132 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl public void AddRun(IVectoRun run) { _jobNumber++; - _runs.Add(run); + Runs.Add(new JobEntry() { + Run = run, + Container = this, + }); } public void AddRuns(IEnumerable<IVectoRun> runs) { _jobNumber++; - _runs.AddRange(runs); + //Runs.AddRange(runs); + foreach (var run in runs) { + Runs.Add(new JobEntry() { + Run = run, + Container = this, + }); + } } public void AddRuns(SimulatorFactory factory) { factory.SumWriter = _sumWriter; factory.JobNumber = _jobNumber++; - _runs.AddRange(factory.SimulationRuns()); + AddRuns(factory.SimulationRuns()); } /// <summary> /// Execute all runs, waits until finished. /// </summary> - public void Execute() + public void Execute(bool multithreaded = true) { Log.Info("VectoRun started running. Executing Runs."); - Task.WaitAll(_runs.Select(r => Task.Factory.StartNew(r.Run)).ToArray()); + foreach (var job in Runs) { + job.Worker = new BackgroundWorker() { + WorkerSupportsCancellation = true, + WorkerReportsProgress = true, + }; + job.Worker.DoWork += job.DoWork; + job.Worker.ProgressChanged += job.ProgressChanged; + job.Worker.RunWorkerCompleted += job.RunWorkerCompleted; + if (multithreaded) { + job.Started = true; + job.Worker.RunWorkerAsync(); + } + } + if (!multithreaded) { + var entry = Runs.First(); + entry.Started = true; + entry.Worker.RunWorkerAsync(); + } + //Task.WaitAll(_runs.Select(r => Task.Factory.StartNew(r.Run)).ToArray()); _sumWriter.Finish(); } + + public void Cancel() + { + foreach (var job in Runs) { + if (job.Worker != null && job.Worker.WorkerSupportsCancellation) { + job.Worker.CancelAsync(); + } + } + } + + private static AutoResetEvent resetEvent = new AutoResetEvent(false); + + public void WaitFinished() + { + resetEvent.WaitOne(); + } + + + private void JobCompleted(JobEntry jobEntry) + { + var next = Runs.FirstOrDefault(x => x.Started == false); + if (next != null) { + next.Started = true; + next.Worker.RunWorkerAsync(); + } + if (Runs.Count(x => x.Done == true) == Runs.Count()) { + _sumWriter.Finish(); + resetEvent.Set(); + } + } + + public Dictionary<string, double> GetProgress() + { + return Runs.ToDictionary(jobEntry => jobEntry.Run.Name, jobEntry => jobEntry.Progress); + } + + public bool AllCompleted + { + get { return (Runs.Count(x => x.Done == true) == Runs.Count()); } + } + + internal class JobEntry + { + public IVectoRun Run; + public JobContainer Container; + public double Progress; + public bool Done; + public bool Started; + public bool Success; + public bool Canceled; + + public BackgroundWorker Worker; + + public void DoWork(object sender, DoWorkEventArgs e) + { + var worker = sender as BackgroundWorker; + Run.Run(worker); + if (worker != null && worker.CancellationPending) { + e.Cancel = true; + Canceled = true; + } + Success = Run.FinishedWithoutErrors; + Done = true; + Container.JobCompleted(this); + } + + public void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {} + + public void ProgressChanged(object sender, ProgressChangedEventArgs e) + { + Progress = e.ProgressPercentage / 1000.0; + } + } } } \ No newline at end of file diff --git a/VectoCore/Models/Simulation/Impl/VectoRun.cs b/VectoCore/Models/Simulation/Impl/VectoRun.cs index 29e3d8bf3c01076129951694f0d89ee026597056..628019912503373d9d301d214e1ddb2215ffef31 100644 --- a/VectoCore/Models/Simulation/Impl/VectoRun.cs +++ b/VectoCore/Models/Simulation/Impl/VectoRun.cs @@ -1,4 +1,5 @@ using System; +using System.ComponentModel; using TUGraz.VectoCore.Exceptions; using TUGraz.VectoCore.Models.Connector.Ports; using TUGraz.VectoCore.Models.Connector.Ports.Impl; @@ -23,6 +24,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl //protected IModalDataWriter DataWriter { get; set; } protected IVehicleContainer Container { get; set; } + public bool FinishedWithoutErrors { get; protected set; } + protected VectoRun(IVehicleContainer container) { Container = container; @@ -35,7 +38,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl } - public void Run() + public void Run(BackgroundWorker worker = null) { Log.Info("VectoJob started running."); @@ -48,16 +51,30 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl Container.CommitSimulationStep(AbsTime, dt); AbsTime += dt; } + if (worker != null) { + worker.ReportProgress((int)(CyclePort.Progress * 1000)); + if (worker.CancellationPending) { + Log.Info("Background Task canceled!"); + Container.FinishSimulation(); + return; + } + } } while (response is ResponseSuccess); } catch (VectoSimulationException vse) { + Log.Error("SIMULATION RUN ABORTED! ========================"); + Log.Error(vse); Container.FinishSimulation(); throw new VectoSimulationException("{6} - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", vse, AbsTime, Container.Distance, dt, Container.VehicleSpeed, Container.Gear, vse.Message, Name); } catch (VectoException ve) { + Log.Error("SIMULATION RUN ABORTED! ========================"); + Log.Error(ve); Container.FinishSimulation(); throw new VectoSimulationException("{6} - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", ve, AbsTime, Container.Distance, dt, Container.VehicleSpeed, Container.Gear, ve.Message, Name); } catch (Exception e) { + Log.Error("SIMULATION RUN ABORTED! ========================"); + Log.Error(e); Container.FinishSimulation(); throw new VectoSimulationException("{6} - absTime: {0}, distance: {1}, dt: {2}, v: {3}, Gear: {4} | {5}", e, AbsTime, Container.Distance, dt, Container.VehicleSpeed, Container.Gear, e.Message, Name); diff --git a/VectoCore/Models/SimulationComponent/Data/AccelerationCurve.cs b/VectoCore/Models/SimulationComponent/Data/AccelerationCurve.cs index 9b3fffe7e6b01d5158f81fc9fb3bc9f42b3100c0..17417da1f038c362ce373c40ba435053f4440a75 100644 --- a/VectoCore/Models/SimulationComponent/Data/AccelerationCurve.cs +++ b/VectoCore/Models/SimulationComponent/Data/AccelerationCurve.cs @@ -38,7 +38,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data return new AccelerationCurveData { _entries = data.Rows.Cast<DataRow>() .Select(r => new KeyValuePair<MeterPerSecond, AccelerationEntry>( - r.ParseDouble("v").SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(), + r.ParseDouble("v").KMPHtoMeterPerSecond(), new AccelerationEntry { Acceleration = r.ParseDouble("acc").SI<MeterPerSquareSecond>(), Deceleration = r.ParseDouble("dec").SI<MeterPerSquareSecond>() diff --git a/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs index 20e33b17a8fc6d4d2b0c9c45001d6079fdcd27df..b982f09e13b2ee0729a9776cf5e5c50cf2726470 100644 --- a/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs +++ b/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs @@ -17,6 +17,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { public class DefaultDriverStrategy : LoggingObject, IDriverStrategy { + public static readonly SIBase<Meter> BrakingSafetyMargin = 0.1.SI<Meter>(); + protected internal DrivingBehaviorEntry NextDrivingAction; public enum DrivingMode @@ -43,7 +45,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl public IResponse Request(Second absTime, Meter ds, MeterPerSecond targetVelocity, Radian gradient) { if (CurrentDrivingMode == DrivingMode.DrivingModeBrake) { - if (Driver.DataBus.Distance.IsGreaterOrEqual(BrakeTrigger.TriggerDistance)) { + if (Driver.DataBus.Distance.IsGreaterOrEqual(BrakeTrigger.TriggerDistance, 1e-3.SI<Meter>())) { CurrentDrivingMode = DrivingMode.DrivingModeDrive; NextDrivingAction = null; DrivingModes[CurrentDrivingMode].ResetMode(); @@ -107,7 +109,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl NextDrivingAction.ActionDistance = NextDrivingAction.TriggerDistance - coastingDistance; break; case DrivingBehavior.Braking: - var brakingDistance = Driver.ComputeDecelerationDistance(NextDrivingAction.NextTargetSpeed); + var brakingDistance = Driver.ComputeDecelerationDistance(NextDrivingAction.NextTargetSpeed) + BrakingSafetyMargin; NextDrivingAction.ActionDistance = NextDrivingAction.TriggerDistance - brakingDistance; break; default: @@ -155,7 +157,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl if (nextTargetSpeed < currentSpeed) { if (!Driver.DriverData.LookAheadCoasting.Enabled || currentSpeed < Driver.DriverData.LookAheadCoasting.MinSpeed) { - var brakingDistance = Driver.ComputeDecelerationDistance(nextTargetSpeed); + var brakingDistance = Driver.ComputeDecelerationDistance(nextTargetSpeed) + BrakingSafetyMargin; Log.Debug("adding 'Braking' starting at distance {0}. brakingDistance: {1}, triggerDistance: {2}", entry.Distance - brakingDistance, brakingDistance, entry.Distance); nextActions.Add(new DrivingBehaviorEntry { @@ -381,7 +383,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl default: return response; } - return null; + return response; } public override void ResetMode() {} @@ -433,7 +435,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl var currentDistance = DataBus.Distance; if (Phase == BrakingPhase.Coast) { - var brakingDistance = Driver.ComputeDecelerationDistance(DriverStrategy.BrakeTrigger.NextTargetSpeed); + var brakingDistance = Driver.ComputeDecelerationDistance(DriverStrategy.BrakeTrigger.NextTargetSpeed) + + DefaultDriverStrategy.BrakingSafetyMargin; Log.Debug("breaking distance: {0}, start braking @ {1}", brakingDistance, DriverStrategy.BrakeTrigger.TriggerDistance - brakingDistance); if (currentDistance + Constants.SimulationSettings.DriverActionDistanceTolerance > @@ -482,10 +485,14 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl Case<ResponseSpeedLimitExceeded>(() => { response = Driver.DrivingActionBrake(absTime, ds, DataBus.VehicleSpeed, gradient); + if (response is ResponseOverload && !DataBus.ClutchClosed(absTime)) { + response = Driver.DrivingActionRoll(absTime, ds, DataBus.VehicleSpeed, gradient); + } }); break; case BrakingPhase.Brake: - var brakingDistance = Driver.ComputeDecelerationDistance(DriverStrategy.BrakeTrigger.NextTargetSpeed); + var brakingDistance = Driver.ComputeDecelerationDistance(DriverStrategy.BrakeTrigger.NextTargetSpeed) + + DefaultDriverStrategy.BrakingSafetyMargin; Log.Debug("Phase: BRAKE. breaking distance: {0} start braking @ {1}", brakingDistance, DriverStrategy.BrakeTrigger.TriggerDistance - brakingDistance); if (DriverStrategy.BrakeTrigger.TriggerDistance - brakingDistance < currentDistance) { @@ -533,7 +540,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl default: return response; } - return null; + return response; } public override void ResetMode() diff --git a/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs b/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs index b1554fa8135906028c5d0fea7dde6ce4909e09ee..fa9cdab03e31e30611cc3ab7187e64d4c9a2a427 100644 --- a/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs +++ b/VectoCore/Models/SimulationComponent/Impl/DistanceBasedDrivingCycle.cs @@ -148,6 +148,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl } CurrentState.Distance = PreviousState.Distance + ds; + CurrentState.SimulationDistance = ds; CurrentState.VehicleTargetSpeed = CycleIntervalIterator.LeftSample.VehicleTargetSpeed; CurrentState.Gradient = ComputeGradient(ds); @@ -223,6 +224,17 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl CycleIntervalIterator.LeftSample.RoadGradient); } + public double Progress + { + get + { + return Data.Entries.Count > 0 + ? ((CurrentState.Distance - Data.Entries.First().Distance) / + (Data.Entries.Last().Distance - Data.Entries.First().Distance)).Value() + : 0; + } + } + public Meter CycleStartDistance { get { return Data.Entries.Count > 0 ? Data.Entries.First().Distance : 0.SI<Meter>(); } @@ -240,6 +252,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl protected override void DoWriteModalResults(IModalDataWriter writer) { writer[ModalResultField.dist] = CurrentState.Distance; + writer[ModalResultField.simulationDistance] = CurrentState.SimulationDistance; writer[ModalResultField.v_targ] = CurrentState.VehicleTargetSpeed; writer[ModalResultField.grad] = (Math.Tan(CurrentState.Gradient.Value()) * 100).SI<Scalar>(); writer[ModalResultField.altitude] = CurrentState.Altitude; @@ -413,6 +426,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl public IResponse Response; public bool RequestToNextSamplePointDone = false; + + public Meter SimulationDistance; } } } \ No newline at end of file diff --git a/VectoCore/Models/SimulationComponent/Impl/Driver.cs b/VectoCore/Models/SimulationComponent/Impl/Driver.cs index 102e9166a5006c8c69ccdae64c5f15f6f1f45301..7ab23c5911cdec59d7b8b229c3f9ee81fc5fb433 100644 --- a/VectoCore/Models/SimulationComponent/Impl/Driver.cs +++ b/VectoCore/Models/SimulationComponent/Impl/Driver.cs @@ -728,9 +728,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl retVal.SimulationInterval = ds / currentSpeed; return retVal; } - Log.Error("vehicle speed is {0}, acceleration is {1}", currentSpeed, acceleration); + Log.Error("vehicle speed is {0}, acceleration is {1}", currentSpeed.Value(), acceleration.Value()); throw new VectoSimulationException( - "vehicle speed has to be > 0 if acceleration = 0! v: {0}", currentSpeed); + "vehicle speed has to be > 0 if acceleration = 0! v: {0}, a: {1}", currentSpeed.Value(), acceleration.Value()); } // we need to accelerate / decelerate. solve quadratic equation... @@ -776,8 +776,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl /// <returns></returns> public IResponse DrivingActionHalt(Second absTime, Second dt, MeterPerSecond targetVelocity, Radian gradient) { - if (!targetVelocity.IsEqual(0) || !DataBus.VehicleSpeed.IsEqual(0)) { - throw new NotImplementedException("TargetVelocity or VehicleVelocity is not zero!"); + if (!targetVelocity.IsEqual(0) || !DataBus.VehicleSpeed.IsEqual(0, 1e-3)) { + throw new NotImplementedException(string.Format( + "TargetVelocity or VehicleVelocity is not zero! v: {0} target: {1}", DataBus.VehicleSpeed.Value(), + targetVelocity.Value())); } DataBus.BreakPower = double.PositiveInfinity.SI<Watt>(); var retVal = NextComponent.Request(absTime, dt, 0.SI<MeterPerSquareSecond>(), gradient); diff --git a/VectoCore/Models/SimulationComponent/Impl/EngineOnlyDrivingCycle.cs b/VectoCore/Models/SimulationComponent/Impl/EngineOnlyDrivingCycle.cs index 7f7016162042e10a0dc9a2205a621f5de882bd88..aa69f91b6b0d8a0945abeed5933e32446b1f74a2 100644 --- a/VectoCore/Models/SimulationComponent/Impl/EngineOnlyDrivingCycle.cs +++ b/VectoCore/Models/SimulationComponent/Impl/EngineOnlyDrivingCycle.cs @@ -75,6 +75,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl return NextComponent.Initialize(Data.Entries[index].EngineTorque, Data.Entries[index].EngineSpeed); } + public double Progress + { + get { throw new NotImplementedException(); } + } + public Meter StartDistance { get { throw new NotImplementedException(); } diff --git a/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs b/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs index 4e359997ae2dc2f0f1fa03274eb76ed506ed1c00..ebb6565f850fe214f61e10198c47d79b0d090c8e 100644 --- a/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs +++ b/VectoCore/Models/SimulationComponent/Impl/Gearbox.cs @@ -229,7 +229,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl }; } - var shiftTimeExceeded = absTime.IsSmaller(_shiftTime) && _shiftTime.IsSmaller(absTime + dt); + var shiftTimeExceeded = absTime.IsSmaller(_shiftTime) && + _shiftTime.IsSmaller(absTime + dt, Data.TractionInterruption / 20.0); if (shiftTimeExceeded) { return new ResponseFailTimeInterval { Source = this, diff --git a/VectoCore/Models/SimulationComponent/Impl/TimeBasedDrivingCycle.cs b/VectoCore/Models/SimulationComponent/Impl/TimeBasedDrivingCycle.cs index 49c2374a056e88e6416760d3a48a36b44210c3dc..e22232b2335996ec154e18d94816e049abdb2f10 100644 --- a/VectoCore/Models/SimulationComponent/Impl/TimeBasedDrivingCycle.cs +++ b/VectoCore/Models/SimulationComponent/Impl/TimeBasedDrivingCycle.cs @@ -69,6 +69,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl throw new NotImplementedException(); } + public double Progress + { + get { throw new NotImplementedException(); } + } + public Meter StartDistance { get { return 0.SI<Meter>(); } diff --git a/VectoCore/Utils/DoubleExtensionMethods.cs b/VectoCore/Utils/DoubleExtensionMethods.cs index d193b704480cc06c3f913a06bd391a599b4d60d9..4ff037e5621ca1d99b590f88f45a6c4978aedb5e 100644 --- a/VectoCore/Utils/DoubleExtensionMethods.cs +++ b/VectoCore/Utils/DoubleExtensionMethods.cs @@ -98,12 +98,14 @@ namespace TUGraz.VectoCore.Utils /// <returns></returns> public static PerSecond RPMtoRad(this double self) { - return self.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>(); + return SI<PerSecond>(self * 2 * Math.PI / 60.0); + //self.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>(); } public static MeterPerSecond KMPHtoMeterPerSecond(this double self) { - return self.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(); + return SI<MeterPerSecond>(self / 3.6); + //return self.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(); } public static double ToRadian(this double self) diff --git a/VectoCore/Utils/Formulas.cs b/VectoCore/Utils/Formulas.cs index 92236f2ea3e7990c5ef3ef66d4b9be23e96478c7..1067468cf298ebd1b4d7a07331961d77eb57f35d 100644 --- a/VectoCore/Utils/Formulas.cs +++ b/VectoCore/Utils/Formulas.cs @@ -24,10 +24,10 @@ namespace TUGraz.VectoCore.Utils MeterPerSquareSecond deceleration) { if (deceleration >= 0) { - throw new VectoException("Deceleration must be negative!"); + throw new VectoException("Deceleration must be negative! a: {0}", deceleration); } if (v2 > v1) { - throw new VectoException("v2 must not be greater than v1"); + throw new VectoException("v2 must not be greater than v1 v1: {0} v2: {1}", v1.Value(), v2.Value()); } return ((v2 - v1) * (v1 + v2) / deceleration / 2.0).Cast<Meter>(); diff --git a/VectoCore/Utils/IntExtensionMethods.cs b/VectoCore/Utils/IntExtensionMethods.cs index fab0e8653713ab38e1090a27e5d8d4f5d1986dcc..13dc8b28b644e38b772a08b081cc473f866521f8 100644 --- a/VectoCore/Utils/IntExtensionMethods.cs +++ b/VectoCore/Utils/IntExtensionMethods.cs @@ -13,13 +13,15 @@ namespace TUGraz.VectoCore.Utils [DebuggerHidden] public static PerSecond RPMtoRad(this int d) { - return d.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>(); + return (d * 2.0 * Math.PI / 60.0).SI<PerSecond>(); + //d.SI().Rounds.Per.Minute.ConvertTo().Radian.Per.Second.Cast<PerSecond>(); } [DebuggerHidden] public static MeterPerSecond KMPHtoMeterPerSecond(this int d) { - return d.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(); + return (d / 3.6).SI<MeterPerSecond>(); + //d.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>(); } diff --git a/VectoCore/Utils/SI.cs b/VectoCore/Utils/SI.cs index 7fd5233607b16a0b36218e219c1a48b471b700be..d3e4fed9f1c0f04b9103c4171457e535bd4311dc 100644 --- a/VectoCore/Utils/SI.cs +++ b/VectoCore/Utils/SI.cs @@ -118,7 +118,10 @@ namespace TUGraz.VectoCore.Utils public class Newton : SIBase<Newton> { [JsonConstructor, DebuggerHidden] - private Newton(double val) : base(new SI(val).Newton) {} + private Newton(double val) : base(val) + { + Numerator = new[] { Unit.N }; + } /// <summary> /// Implements the operator *. @@ -131,7 +134,7 @@ namespace TUGraz.VectoCore.Utils [DebuggerHidden] public static NewtonMeter operator *(Newton newton, Meter meter) { - return ((newton as SI) * meter).Cast<NewtonMeter>(); + return SIBase<NewtonMeter>.Create(newton.Val * meter.Value()); } } @@ -141,7 +144,7 @@ namespace TUGraz.VectoCore.Utils public class Radian : SIBase<Radian> { [JsonConstructor, DebuggerHidden] - private Radian(double val) : base(new SI(val).Radian) {} + private Radian(double val) : base(val) {} } /// <summary> @@ -150,12 +153,15 @@ namespace TUGraz.VectoCore.Utils public class PerSquareSecond : SIBase<PerSquareSecond> { [JsonConstructor, DebuggerHidden] - private PerSquareSecond(double val) : base(new SI(val).Per.Square.Second) {} + private PerSquareSecond(double val) : base(val) + { + Denominator = new[] { Unit.s, Unit.s }; + } [DebuggerHidden] public static PerSecond operator *(PerSquareSecond perSquareSecond, Second second) { - return ((perSquareSecond as SI) * second).Cast<PerSecond>(); + return SIBase<PerSecond>.Create(perSquareSecond.Val * second.Value()); } } @@ -166,7 +172,11 @@ namespace TUGraz.VectoCore.Utils public class MeterPerSquareSecond : SIBase<MeterPerSquareSecond> { [JsonConstructor, DebuggerHidden] - protected MeterPerSquareSecond(double val) : base(new SI(val).Meter.Per.Square.Second) {} + protected MeterPerSquareSecond(double val) : base(val) + { + Numerator = new[] { Unit.m }; + Denominator = new[] { Unit.s, Unit.s }; + } /// <summary> /// Implements the operator /. @@ -179,7 +189,7 @@ namespace TUGraz.VectoCore.Utils [DebuggerHidden] public static Second operator /(MeterPerSecond meterPerSecond, MeterPerSquareSecond meterPerSquareSecond) { - return ((meterPerSecond as SI) / meterPerSquareSecond).Cast<Second>(); + return SIBase<Second>.Create(meterPerSecond.Value() / meterPerSquareSecond.Val); } } @@ -189,7 +199,10 @@ namespace TUGraz.VectoCore.Utils public class Second : SIBase<Second> { [JsonConstructor, DebuggerHidden] - private Second(double val) : base(new SI(val).Second) {} + private Second(double val) : base(val) + { + Numerator = new[] { Unit.s }; + } } /// <summary> @@ -198,7 +211,10 @@ namespace TUGraz.VectoCore.Utils public class Meter : SIBase<Meter> { [JsonConstructor, DebuggerHidden] - protected Meter(double val) : base(new SI(val).Meter) {} + protected Meter(double val) : base(val) + { + Numerator = new[] { Unit.m }; + } } /// <summary> @@ -207,7 +223,10 @@ namespace TUGraz.VectoCore.Utils public class Kilogram : SIBase<Kilogram> { [JsonConstructor, DebuggerHidden] - protected Kilogram(double val) : base(new SI(val).Kilo.Gramm) {} + protected Kilogram(double val) : base(val) + { + Numerator = new[] { Unit.k, Unit.g }; + } } /// <summary> @@ -232,7 +251,10 @@ namespace TUGraz.VectoCore.Utils public class Ton : SIBase<Ton> { [JsonConstructor, DebuggerHidden] - protected Ton(double val) : base(new SI(val).Ton) {} + protected Ton(double val) : base(val * 1000.0) + { + Numerator = new[] { Unit.k, Unit.g }; + } } /// <summary> @@ -241,7 +263,10 @@ namespace TUGraz.VectoCore.Utils public class SquareMeter : SIBase<SquareMeter> { [JsonConstructor, DebuggerHidden] - private SquareMeter(double val) : base(new SI(val).Square.Meter) {} + private SquareMeter(double val) : base(val) + { + Numerator = new[] { Unit.m, Unit.m }; + } } /// <summary> @@ -250,7 +275,10 @@ namespace TUGraz.VectoCore.Utils public class CubicMeter : SIBase<CubicMeter> { [JsonConstructor, DebuggerHidden] - private CubicMeter(double val) : base(new SI(val).Cubic.Meter) {} + private CubicMeter(double val) : base(val) + { + Numerator = new[] { Unit.m, Unit.m, Unit.m }; + } } /// <summary> @@ -259,12 +287,15 @@ namespace TUGraz.VectoCore.Utils public class KilogramSquareMeter : SIBase<KilogramSquareMeter> { [JsonConstructor, DebuggerHidden] - protected KilogramSquareMeter(double val) : base(new SI(val).Kilo.Gramm.Square.Meter) {} + protected KilogramSquareMeter(double val) : base(val) + { + Numerator = new[] { Unit.k, Unit.g, Unit.m, Unit.m }; + } [DebuggerHidden] public static NewtonMeter operator *(KilogramSquareMeter kilogramSquareMeter, PerSquareSecond perSquareSecond) { - return ((kilogramSquareMeter as SI) * perSquareSecond).Cast<NewtonMeter>(); + return SIBase<NewtonMeter>.Create(kilogramSquareMeter.Val * perSquareSecond.Value()); } } @@ -274,7 +305,11 @@ namespace TUGraz.VectoCore.Utils public class KilogramPerWattSecond : SIBase<KilogramPerWattSecond> { [JsonConstructor, DebuggerHidden] - protected KilogramPerWattSecond(double val) : base(new SI(val).Kilo.Gramm.Per.Watt.Second) {} + protected KilogramPerWattSecond(double val) : base(val) + { + Numerator = new[] { Unit.k, Unit.g }; + Denominator = new[] { Unit.W, Unit.s }; + } } /// <summary> @@ -283,7 +318,10 @@ namespace TUGraz.VectoCore.Utils public class Watt : SIBase<Watt> { [JsonConstructor, DebuggerHidden] - private Watt(double val) : base(new SI(val).Watt) {} + private Watt(double val) : base(val) + { + Numerator = new[] { Unit.W }; + } /// <summary> /// Implements the operator /. @@ -296,7 +334,7 @@ namespace TUGraz.VectoCore.Utils [DebuggerHidden] public static PerSecond operator /(Watt watt, NewtonMeter newtonMeter) { - return ((watt as SI) / newtonMeter).Cast<PerSecond>(); + return SIBase<PerSecond>.Create(watt.Val / newtonMeter.Value()); } /// <summary> @@ -310,7 +348,7 @@ namespace TUGraz.VectoCore.Utils [DebuggerHidden] public static NewtonMeter operator /(Watt watt, PerSecond perSecond) { - return ((watt as SI) / perSecond).Cast<NewtonMeter>(); + return SIBase<NewtonMeter>.Create(watt.Val / perSecond.Value()); } } @@ -321,7 +359,10 @@ namespace TUGraz.VectoCore.Utils public class PerSecond : SIBase<PerSecond> { [JsonConstructor, DebuggerHidden] - private PerSecond(double val) : base(new SI(val).Per.Second) {} + private PerSecond(double val) : base(val) + { + Denominator = new[] { Unit.s }; + } } /// <summary> @@ -331,7 +372,11 @@ namespace TUGraz.VectoCore.Utils public class MeterPerSecond : SIBase<MeterPerSecond> { [JsonConstructor, DebuggerHidden] - private MeterPerSecond(double val) : base(new SI(val).Meter.Per.Second) {} + private MeterPerSecond(double val) : base(val) + { + Numerator = new[] { Unit.m }; + Denominator = new[] { Unit.s }; + } /// <summary> /// Implements the operator /. @@ -344,7 +389,7 @@ namespace TUGraz.VectoCore.Utils [DebuggerHidden] public static PerSecond operator /(MeterPerSecond meterPerSecond, Meter meter) { - return ((meterPerSecond as SI) / meter).Cast<PerSecond>(); + return SIBase<PerSecond>.Create(meterPerSecond.Val / meter.Value()); } /// <summary> @@ -358,7 +403,7 @@ namespace TUGraz.VectoCore.Utils [DebuggerHidden] public static Second operator /(Meter second, MeterPerSecond meterPerSecond) { - return (second / (meterPerSecond as SI)).Cast<Second>(); + return SIBase<Second>.Create(second.Value() / meterPerSecond.Val); } /// <summary> @@ -372,7 +417,7 @@ namespace TUGraz.VectoCore.Utils [DebuggerHidden] public static Meter operator *(MeterPerSecond meterPerSecond, Second second) { - return ((meterPerSecond as SI) * second).Cast<Meter>(); + return SIBase<Meter>.Create(meterPerSecond.Val * second.Value()); } /// <summary> @@ -386,7 +431,7 @@ namespace TUGraz.VectoCore.Utils [DebuggerHidden] public static Meter operator *(Second second, MeterPerSecond meterPerSecond) { - return (second * (meterPerSecond as SI)).Cast<Meter>(); + return SIBase<Meter>.Create(second.Value() * meterPerSecond.Val); } } @@ -406,55 +451,61 @@ namespace TUGraz.VectoCore.Utils public class NewtonMeter : SIBase<NewtonMeter> { [JsonConstructor, DebuggerHidden] - private NewtonMeter(double val) : base(new SI(val).Newton.Meter) {} + private NewtonMeter(double val) : base(val) + { + Numerator = new[] { Unit.N, Unit.m }; + } [DebuggerHidden] public static Watt operator *(NewtonMeter newtonMeter, PerSecond perSecond) { - return ((newtonMeter as SI) * perSecond).Cast<Watt>(); + return SIBase<Watt>.Create(newtonMeter.Val * perSecond.Value()); } [DebuggerHidden] public static Watt operator *(PerSecond perSecond, NewtonMeter newtonMeter) { - return ((perSecond as SI) * newtonMeter).Cast<Watt>(); + return SIBase<Watt>.Create(perSecond.Value() * newtonMeter.Value()); } [DebuggerHidden] public static Second operator /(NewtonMeter newtonMeter, Watt watt) { - return ((newtonMeter as SI) / watt).Cast<Second>(); + return SIBase<Second>.Create(newtonMeter.Val / watt.Value()); } [DebuggerHidden] public static PerSquareSecond operator /(NewtonMeter newtonMeter, KilogramSquareMeter kgKilogramSquareMeter) { - return ((newtonMeter as SI) / kgKilogramSquareMeter).Cast<PerSquareSecond>(); + return SIBase<PerSquareSecond>.Create(newtonMeter.Val / kgKilogramSquareMeter.Value()); } [DebuggerHidden] public static PerSecond operator /(NewtonMeter newtonMeter, NewtonMeterSecond newtonMeterSecond) { - return ((newtonMeter as SI) / newtonMeterSecond).Cast<PerSecond>(); + return SIBase<PerSecond>.Create(newtonMeter.Val / newtonMeterSecond.Value()); } [DebuggerHidden] public static Newton operator /(NewtonMeter newtonMeter, Meter meter) { - return ((newtonMeter as SI) / meter).Cast<Newton>(); + return SIBase<Newton>.Create(newtonMeter.Val / meter.Value()); } [DebuggerHidden] public static NewtonMeterSecond operator /(NewtonMeter newtonMeter, PerSecond perSecond) { - return ((newtonMeter as SI) / perSecond).Cast<NewtonMeterSecond>(); + return SIBase<NewtonMeterSecond>.Create(newtonMeter.Val / perSecond.Value()); } } public class NewtonMeterSecond : SIBase<NewtonMeterSecond> { - private NewtonMeterSecond(double val) : base(new SI(val).Newton.Meter.Second) {} + private NewtonMeterSecond(double val) : base(new SI(val).Newton.Meter.Second) + { + Numerator = new[] { Unit.N, Unit.m, Unit.s }; + } } @@ -494,6 +545,8 @@ namespace TUGraz.VectoCore.Utils [DebuggerHidden] protected SIBase(SI si) : base(si) {} + protected SIBase(double value) : base(value) {} + public new T Abs() { return base.Abs().Cast<T>(); @@ -660,12 +713,12 @@ namespace TUGraz.VectoCore.Utils /// <summary> /// The denominator of the SI. /// </summary> - [DataMember] protected readonly Unit[] Denominator; + [DataMember] protected Unit[] Denominator; /// <summary> /// The numerator of the SI. /// </summary> - [DataMember] protected readonly Unit[] Numerator; + [DataMember] protected Unit[] Numerator; /// <summary> /// The current exponent for conversion operations (Square, Cubic, Linear, e.g. new SI(3).Square.Meter). @@ -1169,7 +1222,10 @@ namespace TUGraz.VectoCore.Utils throw new VectoException("Operator '+' can only operate on SI Objects with the same unit. Got: {0} + {1}", si1, si2); } - return new SI(si1.Val + si2.Val, si1.Numerator, si1.Denominator); + return new SI(si1.Val + si2.Val) { + Numerator = si1.Numerator, + Denominator = si1.Denominator + }; } /// <summary> @@ -1189,7 +1245,10 @@ namespace TUGraz.VectoCore.Utils if (!si1.HasEqualUnit(si2)) { throw new VectoException("Operator '-' can only operate on SI Objects with the same unit. Got: {0} - {1}", si1, si2); } - return new SI(si1.Val - si2.Val, si1.Numerator, si1.Denominator); + return new SI(si1.Val - si2.Val) { + Numerator = si1.Numerator, + Denominator = si1.Denominator + }; } /// <summary> @@ -1203,7 +1262,7 @@ namespace TUGraz.VectoCore.Utils public static SI operator -(SI si1) { Contract.Requires(si1 != null); - return new SI(-si1.Val, si1); + return new SI(-si1.Val) { Numerator = si1.Numerator, Denominator = si1.Denominator }; } /// <summary> @@ -1236,7 +1295,7 @@ namespace TUGraz.VectoCore.Utils public static SI operator *(SI si1, double d) { Contract.Requires(si1 != null); - return new SI(si1.Val * d, si1); + return new SI(si1.Val * d) { Numerator = si1.Numerator, Denominator = si1.Denominator }; } /// <summary> @@ -1251,7 +1310,7 @@ namespace TUGraz.VectoCore.Utils public static SI operator *(double d, SI si1) { Contract.Requires(si1 != null); - return new SI(d * si1.Val, si1); + return new SI(d * si1.Val) { Numerator = si1.Numerator, Denominator = si1.Denominator }; } /// <summary> @@ -1297,7 +1356,7 @@ namespace TUGraz.VectoCore.Utils new DivideByZeroException()); } - return new SI(si1.Val / d, si1); + return new SI(si1.Val / d) { Numerator = si1.Numerator, Denominator = si1.Denominator }; } /// <summary> @@ -1318,7 +1377,7 @@ namespace TUGraz.VectoCore.Utils new DivideByZeroException()); } - return new SI(d / si1.Val, si1.Denominator, si1.Numerator); + return new SI(d / si1.Val) { Numerator = si1.Denominator, Denominator = si1.Numerator }; } /// <summary> diff --git a/VectoCore/Utils/VectoMath.cs b/VectoCore/Utils/VectoMath.cs index 116a61aab50d5fec55306b176dc96175b016c483..a9fd8922ecba47d576867af8f988daed7df6f8a9 100644 --- a/VectoCore/Utils/VectoMath.cs +++ b/VectoCore/Utils/VectoMath.cs @@ -124,11 +124,11 @@ namespace TUGraz.VectoCore.Utils } [DebuggerDisplay("(X:{X}, Y:{Y}, Z:{Z})")] - public class Point + public struct Point { - public double X; - public double Y; - public double Z; + public readonly double X; + public readonly double Y; + public readonly double Z; public Point(double x, double y, double z = 0) { @@ -139,8 +139,8 @@ namespace TUGraz.VectoCore.Utils public static Point operator -(Point p1, Point p2) { - Contract.Requires(p1 != null); - Contract.Requires(p2 != null); + //Contract.Requires(p1 != null); + //Contract.Requires(p2 != null); return new Point(p1.X - p2.X, p1.Y - p2.Y, p1.Z - p2.Z); } @@ -151,9 +151,9 @@ namespace TUGraz.VectoCore.Utils #region Equality members - protected bool Equals(Point other) + private bool Equals(Point other) { - Contract.Requires(other != null); + //Contract.Requires(other != null); return X.Equals(other.X) && Y.Equals(other.Y) && Z.Equals(other.Z); } @@ -163,9 +163,6 @@ namespace TUGraz.VectoCore.Utils if (ReferenceEquals(null, obj)) { return false; } - if (ReferenceEquals(this, obj)) { - return true; - } return obj.GetType() == GetType() && Equals((Point)obj); } @@ -196,9 +193,9 @@ namespace TUGraz.VectoCore.Utils public Plane(Triangle tr) { Contract.Requires(tr != null); - Contract.Requires(tr.P1 != null); - Contract.Requires(tr.P2 != null); - Contract.Requires(tr.P3 != null); + //Contract.Requires(tr.P1 != null); + //Contract.Requires(tr.P2 != null); + //Contract.Requires(tr.P3 != null); var ab = tr.P2 - tr.P1; var ac = tr.P3 - tr.P1; @@ -228,22 +225,25 @@ namespace TUGraz.VectoCore.Utils public bool IsInside(double x, double y, bool exact) { - Contract.Requires(P1 != null); - Contract.Requires(P2 != null); - Contract.Requires(P3 != null); + //Contract.Requires(P1 != null); + //Contract.Requires(P2 != null); + //Contract.Requires(P3 != null); //Barycentric Technique: http://www.blackpawn.com/texts/pointinpoly/default.html var p = new Point(x, y, 0); - var v0 = P3 - P1; - var v1 = P2 - P1; - var v2 = p - P1; + var v0X = P3.X - P1.X; + var v0Y = P3.Y - P1.Y; + var v1X = P2.X - P1.X; + var v1Y = P2.Y - P1.Y; + var v2X = p.X - P1.X; + var v2Y = p.Y - P1.Y; - var dot00 = v0.X * v0.X + v0.Y * v0.Y; - var dot01 = v0.X * v1.X + v0.Y * v1.Y; - var dot02 = v0.X * v2.X + v0.Y * v2.Y; - var dot11 = v1.X * v1.X + v1.Y * v1.Y; - var dot12 = v1.X * v2.X + v1.Y * v2.Y; + var dot00 = v0X * v0X + v0Y * v0Y; + var dot01 = v0X * v1X + v0Y * v1Y; + var dot02 = v0X * v2X + v0Y * v2Y; + var dot11 = v1X * v1X + v1Y * v1Y; + var dot12 = v1X * v2X + v1Y * v2Y; var invDenom = 1.0 / (dot00 * dot11 - dot01 * dot01); var u = (dot11 * dot02 - dot01 * dot12) * invDenom; @@ -258,22 +258,25 @@ namespace TUGraz.VectoCore.Utils public bool ContainsInCircumcircle(Point p) { - Contract.Requires(p != null); - Contract.Requires(P1 != null); - Contract.Requires(P2 != null); - Contract.Requires(P3 != null); + //Contract.Requires(p != null); + //Contract.Requires(P1 != null); + //Contract.Requires(P2 != null); + //Contract.Requires(P3 != null); - var p0 = P1 - p; - var p1 = P2 - p; - var p2 = P3 - p; + var p0X = P1.X - p.X; + var p0Y = P1.Y - p.Y; + var p1X = P2.X - p.X; + var p1Y = P2.Y - p.Y; + var p2X = P3.X - p.X; + var p2Y = P3.Y - p.Y; - var p0square = p0.X * p0.X + p0.Y * p0.Y; - var p1square = p1.X * p1.X + p1.Y * p1.Y; - var p2square = p2.X * p2.X + p2.Y * p2.Y; + var p0square = p0X * p0X + p0Y * p0Y; + var p1square = p1X * p1X + p1Y * p1Y; + var p2square = p2X * p2X + p2Y * p2Y; - var det01 = p0.X * p1.Y - p1.X * p0.Y; - var det12 = p1.X * p2.Y - p2.X * p1.Y; - var det20 = p2.X * p0.Y - p0.X * p2.Y; + var det01 = p0X * p1Y - p1X * p0Y; + var det12 = p1X * p2Y - p2X * p1Y; + var det20 = p2X * p0Y - p0X * p2Y; var result = p0square * det12 + p1square * det20 + p2square * det01; @@ -321,9 +324,9 @@ namespace TUGraz.VectoCore.Utils public override int GetHashCode() { unchecked { - var hashCode = (P1 != null ? P1.GetHashCode() : 0); - hashCode = (hashCode * 397) ^ (P2 != null ? P2.GetHashCode() : 0); - hashCode = (hashCode * 397) ^ (P3 != null ? P3.GetHashCode() : 0); + var hashCode = P1.GetHashCode(); + hashCode = (hashCode * 397) ^ P2.GetHashCode(); + hashCode = (hashCode * 397) ^ P3.GetHashCode(); return hashCode; } } @@ -365,7 +368,7 @@ namespace TUGraz.VectoCore.Utils public override int GetHashCode() { - return ((P1 != null ? P1.GetHashCode() : 0)) ^ (P2 != null ? P2.GetHashCode() : 0); + return (P1.GetHashCode()) ^ (P2.GetHashCode()); } #endregion diff --git a/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs b/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs index 5b36881d0687e30764fed1467e1f13a5a356d993..9125c56041aa9a18988217a6a9865251ccaf62c3 100644 --- a/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs +++ b/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestCoach.cs @@ -10,7 +10,7 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy [TestInitialize] public void DisableLogging() { - LogManager.DisableLogging(); + //LogManager.DisableLogging(); //GraphWriter.Disable(); } @@ -30,7 +30,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_20_60_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_Level); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_level.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_level.vmod"); @@ -40,7 +43,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_20_60_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_uphilll_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_uphill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_uphill_5.vmod"); @@ -51,7 +57,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_20_60_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_downhill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_downhill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_downhill_5.vmod"); @@ -62,7 +71,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_20_60_uphill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_uphill_25); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_uphill_25.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_uphill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_uphill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_uphill_25.vmod"); @@ -72,7 +84,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_20_60_downhill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_downhill_25); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_downhill_25.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_downhill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_downhill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_downhill_25.vmod"); @@ -82,7 +97,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_20_60_uphill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_uphill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_uphill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_uphill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_uphill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_uphill_15.vmod"); @@ -92,7 +110,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_20_60_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_downhill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_downhill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_60_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_60_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_60_downhill_15.vmod"); @@ -102,7 +123,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_85_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_level); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_level.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_level.vmod"); @@ -112,7 +136,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_85_uphill_1() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_1); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_1.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_1.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_uphill_1.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_uphill_1.vmod"); @@ -122,7 +149,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_85_uphill_2() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_2); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_2.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_2.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_uphill_2.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_uphill_2.vmod"); @@ -132,7 +162,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_85_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_uphill_5.vmod"); @@ -142,7 +175,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_85_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_downhill_5.vmod"); @@ -152,7 +188,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_85_uphill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_25); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_25.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_uphill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_uphill_25.vmod"); @@ -162,7 +201,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_85_downhill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_25); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_25.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_downhill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_downhill_25.vmod"); @@ -172,7 +214,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_85_uphill_10() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_10); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_10.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_uphill_10.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_uphill_10.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_uphill_10.vmod"); @@ -182,7 +227,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_85_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_0_85_downhill_15.vmod"); @@ -192,7 +240,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_stop_0_85_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_stop_0_85_level); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_stop_0_85_level.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_stop_0_85_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_stop_0_85_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_stop_0_85_level.vmod"); @@ -203,7 +254,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_20_22_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_22_uphill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_22_uphill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_20_22_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_20_22_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Accelerate_20_22_uphill_5.vmod"); @@ -217,7 +271,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_22_20_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_22_20_downhill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_22_20_downhill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_22_20_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_22_20_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_22_20_downhill_5.vmod"); @@ -227,7 +284,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_60_20_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_level); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_level.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_level.vmod"); @@ -237,7 +297,7 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_45_0_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_45_0_level); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_45_0_level.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_45_0_level.vmod"); GraphWriter.Write("Coach_DriverStrategy_Decelerate_45_0_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_45_0_level.vmod"); @@ -247,7 +307,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_45_0_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_45_0_uphill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_45_0_uphill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_45_0_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_45_0_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_45_0_uphill_5.vmod"); @@ -257,7 +320,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_45_0_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_45_0_downhill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_45_0_downhill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_45_0_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_45_0_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_45_0_downhill_5.vmod"); @@ -267,7 +333,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_60_20_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_uphill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_uphill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_uphill_5.vmod"); @@ -277,7 +346,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_60_20_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_downhill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_downhill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_downhill_5.vmod"); @@ -287,7 +359,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Decelerate_60_20_uphill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_uphill_25); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_uphill_25.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_uphill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_uphill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_uphill_25.vmod"); @@ -297,7 +372,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_60_20_downhill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_downhill_25); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_downhill_25.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_downhill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_downhill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_downhill_25.vmod"); @@ -307,7 +385,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Decelerate_60_20_uphill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_uphill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_uphill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_uphill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_uphill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_uphill_15.vmod"); @@ -317,7 +398,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_60_20_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_downhill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_downhill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_60_20_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_60_20_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_60_20_downhill_15.vmod"); @@ -327,7 +411,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_80_0_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_level); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_level.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_level.vmod"); @@ -337,7 +424,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_80_0_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_uphill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_uphill_5.vmod"); @@ -347,7 +437,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_80_0_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_downhill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_downhill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_downhill_5.vmod"); @@ -357,7 +450,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Decelerate_80_0_uphill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_25); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_steep_uphill_25.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_steep_uphill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_steep_uphill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_steep_uphill_25.vmod"); @@ -367,7 +463,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_80_0_downhill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_downhill_25); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_downhill_25.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_downhill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_downhill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_downhill_25.vmod"); @@ -377,7 +476,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_80_0_uphill_3() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_3); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_uphill_3.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_uphill_3.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_uphill_3.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_uphill_3.vmod"); @@ -387,7 +489,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Decelerate_80_0_uphill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_steep_uphill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_steep_uphill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_steep_uphill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_steep_uphill_15.vmod"); @@ -397,7 +502,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Decelerate_80_0_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_downhill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_downhill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Decelerate_80_0_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Decelerate_80_0_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Decelerate_80_0_downhill_15.vmod"); @@ -411,7 +519,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_80_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_level); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_level.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_80_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_level.vmod"); @@ -421,7 +532,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_80_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_uphill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_uphill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_80_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_uphill_5.vmod"); @@ -431,7 +545,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_80_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_downhill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_downhill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_80_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_downhill_5.vmod"); @@ -441,7 +558,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_20_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_20_downhill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_20_downhill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_20_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_20_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_20_downhill_15.vmod"); @@ -451,7 +571,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_30_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_downhill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_downhill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_30_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_30_downhill_15.vmod"); @@ -461,7 +584,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_50_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_downhill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_downhill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_50_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_50_downhill_15.vmod"); @@ -471,7 +597,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_80_uphill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_uphill_25); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_uphill_25.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_uphill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_80_uphill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_uphill_25.vmod"); @@ -481,7 +610,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_80_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_downhill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_downhill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_80_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_downhill_15.vmod"); @@ -491,7 +623,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_80_uphill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_uphill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_uphill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_uphill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_80_uphill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_uphill_15.vmod"); @@ -501,7 +636,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_10_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_level); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_level.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_10_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_level.vmod"); @@ -515,7 +653,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy " 0, 10, 5, 0", "800, 10, 5, 0", }); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_uphill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_10_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_uphill_5.vmod"); @@ -525,7 +666,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_10_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_downhill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_downhill_5.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_10_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_downhill_5.vmod"); @@ -535,7 +679,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_10_downhill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_downhill_25); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_downhill_25.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_downhill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_10_downhill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_downhill_25.vmod"); @@ -545,7 +692,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_10_uphill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_uphill_25); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_uphill_25.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_uphill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_10_uphill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_uphill_25.vmod"); @@ -555,7 +705,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_10_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_downhill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_downhill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_10_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_downhill_15.vmod"); @@ -565,7 +718,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_10_uphill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_uphill_15); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_uphill_15.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_10_uphill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_10_uphill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_10_uphill_15.vmod"); @@ -579,7 +735,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_80_Increasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_Increasing_Slope); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_slope_inc.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_slope_inc.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_80_slope_inc.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_Increasing_Slope.vmod"); @@ -589,7 +748,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_50_Increasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_Increasing_Slope); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_slope_inc.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_slope_inc.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_50_slope_inc.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_50_Increasing_Slope.vmod"); @@ -599,7 +761,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_30_Increasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_Increasing_Slope); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_slope_inc.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_slope_inc.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_30_slope_inc.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_30_Increasing_Slope.vmod"); @@ -609,7 +774,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_80_Decreasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_Decreasing_Slope); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_slope_dec.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_slope_dec.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_80_slope_dec.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_Decreasing_Slope.vmod"); @@ -619,7 +787,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_50_Decreasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_Decreasing_Slope); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_slope_dec.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_slope_dec.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_50_slope_dec.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_50_Decreasing_Slope.vmod"); @@ -629,7 +800,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_30_Decreasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_Decreasing_Slope); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_slope_dec.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_slope_dec.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_30_slope_dec.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_30_Decreasing_Slope.vmod"); @@ -639,7 +813,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_80_Dec_Increasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_Dec_Increasing_Slope); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_slope_dec-inc.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_80_slope_dec-inc.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_80_slope_dec-inc.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_80_Dec_Increasing_Slope.vmod"); @@ -649,7 +826,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_50_Dec_Increasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_Dec_Increasing_Slope); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_slope_dec-inc.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_50_slope_dec-inc.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_50_slope_dec-inc.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_50_Dec_Increasing_Slope.vmod"); @@ -660,7 +840,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_30_Dec_Increasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_Dec_Increasing_Slope); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_slope_dec-inc.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_30_slope_dec-inc.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_30_slope_dec-inc.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_30_Dec_Increasing_Slope.vmod"); @@ -674,7 +857,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_DecelerateWhileBrake_80_0_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerateWhileBrake_80_0_level); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_DecelerateWhileBrake_80_0_level.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_DecelerateWhileBrake_80_0_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_DecelerateWhileBrake_80_0_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_DecelerateWhileBrake_80_0_level.vmod"); @@ -684,7 +870,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_AccelerateWhileBrake_80_0_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerateWhileBrake_80_0_level); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_AccelerateWhileBrake_80_0_level.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_AccelerateWhileBrake_80_0_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_AccelerateWhileBrake_80_0_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_AccelerateWhileBrake_80_0_level.vmod"); @@ -694,7 +883,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_AccelerateAtBrake_80_0_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerateAtBrake_80_0_level); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_AccelerateAtBrake_80_0_level.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_AccelerateAtBrake_80_0_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_AccelerateAtBrake_80_0_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_AccelerateAtBrake_80_0_level.vmod"); @@ -704,7 +896,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_AccelerateBeforeBrake_80_0_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerateBeforeBrake_80_0_level); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_AccelerateBeforeBrake_80_0_level.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_AccelerateBeforeBrake_80_0_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_AccelerateBeforeBrake_80_0_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_AccelerateBeforeBrake_80_0_level.vmod"); @@ -714,7 +909,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Drive_stop_85_stop_85_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_stop_85_stop_85_level); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_stop_85_stop_85_level.vmod").Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Drive_stop_85_stop_85_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Drive_stop_85_stop_85_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach\24t Coach_Cycle_Drive_stop_85_stop_85_level.vmod"); @@ -728,8 +926,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_85_downhill_5_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_5-overspeed.vmod", true) - .Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, + "Coach_DriverStrategy_Accelerate_0_85_downhill_5-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_downhill_5-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_85_downhill_5.vmod"); @@ -739,8 +940,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_85_downhill_3_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_3); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_3-overspeed.vmod", true) - .Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, + "Coach_DriverStrategy_Accelerate_0_85_downhill_3-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_downhill_3-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_85_downhill_3.vmod"); @@ -751,8 +955,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_85_downhill_1_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_1); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_85_downhill_1-overspeed.vmod", true) - .Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, + "Coach_DriverStrategy_Accelerate_0_85_downhill_1-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_85_downhill_1-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_85_downhill_1.vmod"); @@ -763,8 +970,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_60_downhill_5_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_60_downhill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_60_downhill_5-overspeed.vmod", true) - .Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, + "Coach_DriverStrategy_Accelerate_0_60_downhill_5-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_60_downhill_5-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_60_downhill_5.vmod"); @@ -774,8 +984,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_60_downhill_3_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_60_downhill_3); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_60_downhill_3-overspeed.vmod", true) - .Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, + "Coach_DriverStrategy_Accelerate_0_60_downhill_3-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_60_downhill_3-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_60_downhill_3.vmod"); @@ -786,8 +999,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_60_downhill_1_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_60_downhill_1); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_60_downhill_1-overspeed.vmod", true) - .Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, + "Coach_DriverStrategy_Accelerate_0_60_downhill_1-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_60_downhill_1-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_60_downhill_1.vmod"); @@ -798,8 +1014,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_40_downhill_5_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_40_downhill_5); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_40_downhill_5-overspeed.vmod", true) - .Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, + "Coach_DriverStrategy_Accelerate_0_40_downhill_5-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_40_downhill_5-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_40_downhill_5.vmod"); @@ -809,8 +1028,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_40_downhill_3_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_40_downhill_3); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_40_downhill_3-overspeed.vmod", true) - .Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, + "Coach_DriverStrategy_Accelerate_0_40_downhill_3-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_40_downhill_3-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_40_downhill_3.vmod"); @@ -821,8 +1043,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Coach_Accelerate_0_40_downhill_1_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_40_downhill_1); - CoachPowerTrain.CreateEngineeringRun(cycle, "Coach_DriverStrategy_Accelerate_0_40_downhill_1-overspeed.vmod", true) - .Run(); + var run = CoachPowerTrain.CreateEngineeringRun(cycle, + "Coach_DriverStrategy_Accelerate_0_40_downhill_1-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Coach_DriverStrategy_Accelerate_0_40_downhill_1-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\Coach_Overspeed\24t Coach_Cycle_Accelerate_0_40_downhill_1.vmod"); diff --git a/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs b/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs index 4c96b6609cc2980082a02407c5b6fa03f16d91ed..9ff58535f3e3f6400e3bddcb57bf664903f5ee62 100644 --- a/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs +++ b/VectoCoreTest/Integration/DriverStrategy/DriverStrategyTestTruck.cs @@ -21,7 +21,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_20_60_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_Level); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_level.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_level.vmod"); @@ -31,7 +34,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_20_60_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_uphilll_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_uphill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_uphill_5.vmod"); @@ -42,7 +48,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_20_60_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_downhill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_downhill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_downhill_5.vmod"); @@ -53,7 +62,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_20_60_uphill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_uphill_25); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_uphill_25.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_uphill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_uphill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_uphill_25.vmod"); @@ -63,7 +75,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_20_60_downhill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_downhill_25); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_downhill_25.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_downhill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_downhill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_downhill_25.vmod"); @@ -73,7 +88,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_20_60_uphill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_uphill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_uphill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_uphill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_uphill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_uphill_15.vmod"); @@ -83,7 +101,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_20_60_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_60_downhill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_downhill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_60_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_60_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_60_downhill_15.vmod"); @@ -93,7 +114,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_85_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_level); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_level.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_level.vmod"); @@ -103,7 +127,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_85_uphill_1() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_1); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_1.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_1.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_uphill_1.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_uphill_1.vmod"); @@ -113,7 +140,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_85_uphill_2() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_2); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_2.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_2.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_uphill_2.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_uphill_2.vmod"); @@ -123,7 +153,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_85_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_uphill_5.vmod"); @@ -143,7 +176,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_85_uphill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_25); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_25.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_uphill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_uphill_25.vmod"); @@ -153,7 +189,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_85_downhill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_25); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_25.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_downhill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_downhill_25.vmod"); @@ -163,7 +202,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_85_uphill_10() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_uphill_10); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_10.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_uphill_10.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_uphill_10.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_uphill_10.vmod"); @@ -173,7 +215,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_85_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_downhill_15.vmod"); @@ -183,7 +228,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_stop_0_85_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_stop_0_85_level); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_stop_0_85_level.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_stop_0_85_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_stop_0_85_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_stop_0_85_level.vmod"); @@ -194,7 +242,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_20_22_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_20_22_uphill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_22_uphill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_20_22_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_20_22_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Accelerate_20_22_uphill_5.vmod"); @@ -208,7 +259,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_22_20_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_22_20_downhill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_22_20_downhill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_22_20_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_22_20_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_22_20_downhill_5.vmod"); @@ -218,7 +272,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_60_20_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_level); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_level.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_level.vmod"); @@ -228,7 +285,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_45_0_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_45_0_level); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_45_0_level.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_45_0_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_45_0_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_45_0_level.vmod"); @@ -238,7 +298,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_45_0_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_45_0_uphill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_45_0_uphill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_45_0_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_45_0_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_45_0_uphill_5.vmod"); @@ -248,7 +311,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_45_0_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_45_0_downhill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_45_0_downhill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_45_0_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_45_0_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_45_0_downhill_5.vmod"); @@ -258,7 +324,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_60_20_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_uphill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_uphill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_uphill_5.vmod"); @@ -268,7 +337,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_60_20_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_downhill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_downhill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_downhill_5.vmod"); @@ -278,7 +350,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Decelerate_60_20_uphill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_uphill_25); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_uphill_25.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_uphill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_uphill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_uphill_25.vmod"); @@ -288,7 +363,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_60_20_downhill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_downhill_25); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_downhill_25.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_downhill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_downhill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_downhill_25.vmod"); @@ -298,7 +376,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Decelerate_60_20_uphill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_uphill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_uphill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_uphill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_uphill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_uphill_15.vmod"); @@ -308,7 +389,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_60_20_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_60_20_downhill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_downhill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_60_20_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_60_20_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_60_20_downhill_15.vmod"); @@ -318,7 +402,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_80_0_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_level); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_level.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_level.vmod"); @@ -328,7 +415,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_80_0_uphill_3() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_3); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_uphill_3.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_uphill_3.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_uphill_3.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_uphill_3.vmod"); @@ -345,15 +435,21 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy }; var cycle = SimpleDrivingCycles.CreateCycleData(data); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_SlopeChangeDuringCoast.vmod") - .Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, + "Truck_DriverStrategy_Decelerate_80_0_SlopeChangeDuringCoast.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); } [TestMethod, Ignore] public void Truck_Decelerate_80_0_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_uphill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_uphill_5.vmod"); @@ -363,7 +459,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_80_0_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_downhill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_downhill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_downhill_5.vmod"); @@ -373,7 +472,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Decelerate_80_0_uphill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_25); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_steep_uphill_25.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_steep_uphill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_steep_uphill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_steep_uphill_25.vmod"); @@ -383,7 +485,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_80_0_downhill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_downhill_25); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_downhill_25.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_downhill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_downhill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_downhill_25.vmod"); @@ -393,7 +498,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Decelerate_80_0_uphill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_uphill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_steep_uphill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_steep_uphill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_steep_uphill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_steep_uphill_15.vmod"); @@ -403,12 +511,54 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Decelerate_80_0_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerate_80_0_downhill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_downhill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Decelerate_80_0_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_80_0_downhill_15.vmod"); } + [TestMethod] + public void Truck_Decelerate_20_0_downhill_2() + { + var cycleData = new string[] { + // <s>,<v>,<grad>,<stop> + " 0, 20, -1.8, 0", + "2052, 0, -1.8, 2" + }; + var cycle = SimpleDrivingCycles.CreateCycleData(cycleData); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, + "Truck_DriverStrategy_Decelerate_20_0_downhill_2_RefLoad.vmod", + 7500.SI<Kilogram>(), 12900.SI<Kilogram>()); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); + + //GraphWriter.Write("Truck_DriverStrategy_Decelerate_80_0_downhill_15.vmod", + // @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Decelerate_20_0_downhill_2_RefLoad.vmod"); + } + + [TestMethod] + public void Truck_Decelerate_55_43_0_downhill_RefLoad() + { + var cycleData = new string[] { + // <s>,<v>,<grad>,<stop> + " 0, 55.2, -0.6, 0", + " 500, 43.6, -0.6, 0", + " 510, 43.6, -0.3, 0", + " 623, 0, -0.2, 4" + }; + var cycle = SimpleDrivingCycles.CreateCycleData(cycleData); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, + "Truck_Decelerate_55_43_0_downhill_RefLoad.vmod", + 7500.SI<Kilogram>(), 12900.SI<Kilogram>()); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); + } + #endregion #region Drive @@ -417,7 +567,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_80_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_level); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_level.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_80_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_level.vmod"); @@ -427,7 +580,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_80_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_uphill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_uphill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_80_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_uphill_5.vmod"); @@ -437,7 +593,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_80_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_downhill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_downhill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_80_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_downhill_5.vmod"); @@ -447,7 +606,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_20_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_20_downhill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_20_downhill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_20_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_20_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_20_downhill_15.vmod"); @@ -457,7 +619,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_30_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_downhill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_downhill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_30_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_30_downhill_15.vmod"); @@ -467,7 +632,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_50_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_downhill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_downhill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_50_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_50_downhill_15.vmod"); @@ -477,7 +645,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_80_uphill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_uphill_25); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_uphill_25.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_uphill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_80_uphill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_uphill_25.vmod"); @@ -487,7 +658,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_80_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_downhill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_downhill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_80_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_downhill_15.vmod"); @@ -497,7 +671,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_80_uphill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_uphill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_uphill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_uphill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_80_uphill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_uphill_15.vmod"); @@ -507,7 +684,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_10_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_level); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_level.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_10_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_level.vmod"); @@ -517,7 +697,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_10_uphill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_uphill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_uphill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_uphill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_10_uphill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_uphill_5.vmod"); @@ -527,7 +710,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_10_downhill_5() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_downhill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_downhill_5.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_downhill_5.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_10_downhill_5.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_downhill_5.vmod"); @@ -537,7 +723,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_10_downhill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_downhill_25); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_downhill_25.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_downhill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_10_downhill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_downhill_25.vmod"); @@ -547,7 +736,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_10_uphill_25() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_uphill_25); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_uphill_25.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_uphill_25.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_10_uphill_25.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_uphill_25.vmod"); @@ -557,7 +749,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_10_downhill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_downhill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_downhill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_downhill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_10_downhill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_downhill_15.vmod"); @@ -567,7 +762,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_10_uphill_15() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_10_uphill_15); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_uphill_15.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_10_uphill_15.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_10_uphill_15.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_10_uphill_15.vmod"); @@ -581,7 +779,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_80_Increasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_Increasing_Slope); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_slope_inc.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_slope_inc.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_80_slope_inc.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_Increasing_Slope.vmod"); @@ -591,7 +792,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_50_Increasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_Increasing_Slope); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_slope_inc.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_slope_inc.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_50_slope_inc.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_50_Increasing_Slope.vmod"); @@ -601,7 +805,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_30_Increasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_Increasing_Slope); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_slope_inc.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_slope_inc.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_30_slope_inc.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_30_Increasing_Slope.vmod"); @@ -611,7 +818,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_80_Decreasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_Decreasing_Slope); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_slope_dec.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_slope_dec.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_80_slope_dec.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_Decreasing_Slope.vmod"); @@ -621,7 +831,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_50_Decreasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_Decreasing_Slope); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_slope_dec.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_slope_dec.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_50_slope_dec.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_50_Decreasing_Slope.vmod"); @@ -631,7 +844,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_30_Decreasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_Decreasing_Slope); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_slope_dec.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_slope_dec.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_30_slope_dec.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_30_Decreasing_Slope.vmod"); @@ -641,7 +857,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_80_Dec_Increasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_80_Dec_Increasing_Slope); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_slope_dec-inc.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_80_slope_dec-inc.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_80_slope_dec-inc.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_80_Dec_Increasing_Slope.vmod"); @@ -651,7 +870,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_50_Dec_Increasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_50_Dec_Increasing_Slope); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_slope_dec-inc.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_50_slope_dec-inc.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_50_slope_dec-inc.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_50_Dec_Increasing_Slope.vmod"); @@ -662,7 +884,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_30_Dec_Increasing_Slope() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_30_Dec_Increasing_Slope); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_slope_dec-inc.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_30_slope_dec-inc.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_30_slope_dec-inc.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_30_Dec_Increasing_Slope.vmod"); @@ -676,7 +901,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_DecelerateWhileBrake_80_0_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDecelerateWhileBrake_80_0_level); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_DecelerateWhileBrake_80_0_level.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_DecelerateWhileBrake_80_0_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_DecelerateWhileBrake_80_0_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_DecelerateWhileBrake_80_0_level.vmod"); @@ -686,7 +914,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_AccelerateWhileBrake_80_0_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerateWhileBrake_80_0_level); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_AccelerateWhileBrake_80_0_level.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_AccelerateWhileBrake_80_0_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_AccelerateWhileBrake_80_0_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_AccelerateWhileBrake_80_0_level.vmod"); @@ -696,7 +927,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_AccelerateAtBrake_80_0_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerateAtBrake_80_0_level); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_AccelerateAtBrake_80_0_level.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_AccelerateAtBrake_80_0_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_AccelerateAtBrake_80_0_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_AccelerateAtBrake_80_0_level.vmod"); @@ -706,7 +940,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_AccelerateBeforeBrake_80_0_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerateBeforeBrake_80_0_level); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_AccelerateBeforeBrake_80_0_level.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_AccelerateBeforeBrake_80_0_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_AccelerateBeforeBrake_80_0_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_AccelerateBeforeBrake_80_0_level.vmod"); @@ -716,7 +953,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Drive_stop_85_stop_85_level() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleDrive_stop_85_stop_85_level); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_stop_85_stop_85_level.vmod").Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Drive_stop_85_stop_85_level.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Drive_stop_85_stop_85_level.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck\40t_Long_Haul_Truck_Cycle_Drive_stop_85_stop_85_level.vmod"); @@ -733,8 +973,12 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy }; var cycle = SimpleDrivingCycles.CreateCycleData(data); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_48_52_beforeStop_level.vmod", - 7500.SI<Kilogram>(), 19000.SI<Kilogram>()).Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, + "Truck_DriverStrategy_Accelerate_48_52_beforeStop_level.vmod", + 7500.SI<Kilogram>(), 19000.SI<Kilogram>()); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); //GraphWriter.Write("Truck_DriverStrategy_Accelerate_48_52_beforeStop_level.vmod"); } @@ -747,8 +991,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_85_downhill_5_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_5-overspeed.vmod", true) - .Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, + "Truck_DriverStrategy_Accelerate_0_85_downhill_5-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_downhill_5-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_downhill_5.vmod"); @@ -758,8 +1005,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_85_downhill_3_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_3); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_3-overspeed.vmod", true) - .Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, + "Truck_DriverStrategy_Accelerate_0_85_downhill_3-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_downhill_3-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_downhill_3.vmod"); @@ -770,8 +1020,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_85_downhill_1_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_85_downhill_1); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_85_downhill_1-overspeed.vmod", true) - .Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, + "Truck_DriverStrategy_Accelerate_0_85_downhill_1-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_85_downhill_1-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_85_downhill_1.vmod"); @@ -782,8 +1035,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_60_downhill_5_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_60_downhill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_60_downhill_5-overspeed.vmod", true) - .Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, + "Truck_DriverStrategy_Accelerate_0_60_downhill_5-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_60_downhill_5-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_60_downhill_5.vmod"); @@ -793,8 +1049,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_60_downhill_3_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_60_downhill_3); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_60_downhill_3-overspeed.vmod", true) - .Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, + "Truck_DriverStrategy_Accelerate_0_60_downhill_3-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_60_downhill_3-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_60_downhill_3.vmod"); @@ -805,8 +1064,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_60_downhill_1_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_60_downhill_1); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_60_downhill_1-overspeed.vmod", true) - .Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, + "Truck_DriverStrategy_Accelerate_0_60_downhill_1-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_60_downhill_1-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_60_downhill_1.vmod"); @@ -817,8 +1079,8 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_40_downhill_5_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_40_downhill_5); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_40_downhill_5-overspeed.vmod", true) - .Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, + "Truck_DriverStrategy_Accelerate_0_40_downhill_5-overspeed.vmod", true); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_40_downhill_5-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_40_downhill_5.vmod"); @@ -828,8 +1090,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_40_downhill_3_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_40_downhill_3); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_40_downhill_3-overspeed.vmod", true) - .Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, + "Truck_DriverStrategy_Accelerate_0_40_downhill_3-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_40_downhill_3-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_40_downhill_3.vmod"); @@ -840,8 +1105,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy public void Truck_Accelerate_0_40_downhill_1_overspeed() { var cycle = SimpleDrivingCycles.CreateCycleData(SimpleDrivingCycles.CycleAccelerate_0_40_downhill_1); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_0_40_downhill_1-overspeed.vmod", true) - .Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, + "Truck_DriverStrategy_Accelerate_0_40_downhill_1-overspeed.vmod", true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); GraphWriter.Write("Truck_DriverStrategy_Accelerate_0_40_downhill_1-overspeed.vmod", @"..\..\TestData\Integration\DriverStrategy\Vecto2.2\40t Truck_Overspeed\40t_Long_Haul_Truck_Cycle_Accelerate_0_40_downhill_1.vmod"); @@ -859,8 +1127,11 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy }; var cycle = SimpleDrivingCycles.CreateCycleData(cycleData); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_Decelerate-overspeed.vmod", true) - .Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_Accelerate_Decelerate-overspeed.vmod", + true); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); } [TestMethod] @@ -874,8 +1145,10 @@ namespace TUGraz.VectoCore.Tests.Integration.DriverStrategy }; var cycle = SimpleDrivingCycles.CreateCycleData(cycleData); - Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_SlopeChangeBeforeStop.vmod") - .Run(); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck_DriverStrategy_SlopeChangeBeforeStop.vmod"); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); } [TestMethod] diff --git a/VectoCoreTest/Integration/FullCycleDeclarationTest.cs b/VectoCoreTest/Integration/FullCycleDeclarationTest.cs index 654f193d225713abefb6dd80198f22906d01a9a0..fd00c6030c2fa30b87cba6d55e7f1c1b468985cc 100644 --- a/VectoCoreTest/Integration/FullCycleDeclarationTest.cs +++ b/VectoCoreTest/Integration/FullCycleDeclarationTest.cs @@ -2,9 +2,13 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using NLog; using TUGraz.VectoCore.Configuration; +using TUGraz.VectoCore.FileIO.Reader; using TUGraz.VectoCore.FileIO.Reader.Impl; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.SimulationComponent.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Impl; +using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.Tests.Integration { @@ -13,10 +17,110 @@ namespace TUGraz.VectoCore.Tests.Integration { public const string TruckDeclarationJob = @"TestData\Integration\DeclarationMode\40t Truck\40t_Long_Haul_Truck.vecto"; + + [TestMethod] + public void Truck40t_LongHaulCycle_RefLoad() + { + var cycle = SimpleDrivingCycles.ReadDeclarationCycle("LongHaul"); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_LongHaulCycle_RefLoad.vmod", + 7500.SI<Kilogram>(), 12900.SI<Kilogram>()); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); + } + + [TestMethod] + public void Truck40t_RegionalDeliveryCycle_RefLoad() + { + var cycle = SimpleDrivingCycles.ReadDeclarationCycle("RegionalDelivery"); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_RegionalDeliveryCycle_RefLoad.vmod", + 7500.SI<Kilogram>(), 12900.SI<Kilogram>()); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); + } + + [TestMethod] + public void Truck40t_UrbanDeliveryCycle_RefLoad() + { + var cycle = SimpleDrivingCycles.ReadDeclarationCycle("UrbanDelivery"); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_UrbanDeliveryCycle_RefLoad.vmod", + 7500.SI<Kilogram>(), 12900.SI<Kilogram>()); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); + } + + [TestMethod] + public void Truck40t_MunicipalCycle_RefLoad() + { + var cycle = SimpleDrivingCycles.ReadDeclarationCycle("Municipal"); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_MunicipalCycle_RefLoad.vmod", + 7500.SI<Kilogram>(), 12900.SI<Kilogram>()); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); + } + + [TestMethod] + public void Truck40t_ConstructionCycle_RefLoad() + { + var cycle = SimpleDrivingCycles.ReadDeclarationCycle("Construction"); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_ConstructionCycle_RefLoad.vmod", + 7500.SI<Kilogram>(), 12900.SI<Kilogram>()); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); + } + + [TestMethod] + public void Truck40t_HeavyUrbanCycle_RefLoad() + { + var cycle = SimpleDrivingCycles.ReadDeclarationCycle("HeavyUrban"); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_HeavyUrbanCycle_RefLoad.vmod", + 7500.SI<Kilogram>(), 12900.SI<Kilogram>()); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); + } + + [TestMethod] + public void Truck40t_SubUrbanCycle_RefLoad() + { + var cycle = SimpleDrivingCycles.ReadDeclarationCycle("Suburban"); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_SubUrbanCycle_RefLoad.vmod", + 7500.SI<Kilogram>(), 12900.SI<Kilogram>()); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); + } + + [TestMethod] + public void Truck40t_InterUrbanCycle_RefLoad() + { + var cycle = SimpleDrivingCycles.ReadDeclarationCycle("Interurban"); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_InterUrbanCycle_RefLoad.vmod", + 7500.SI<Kilogram>(), 12900.SI<Kilogram>()); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); + } + + [TestMethod] + public void Truck40t_CoachCycle_RefLoad() + { + var cycle = SimpleDrivingCycles.ReadDeclarationCycle("Coach"); + var run = Truck40tPowerTrain.CreateEngineeringRun(cycle, "Truck40t_CoachCycle_RefLoad.vmod", + 7500.SI<Kilogram>(), 12900.SI<Kilogram>()); + + run.Run(); + Assert.IsTrue(run.FinishedWithoutErrors); + } + [TestMethod] public void Truck40tDeclarationTest() { - //LogManager.DisableLogging(); + LogManager.DisableLogging(); var factory = new SimulatorFactory(SimulatorFactory.FactoryMode.DeclarationMode, TruckDeclarationJob); var sumFileName = Path.GetFileNameWithoutExtension(TruckDeclarationJob) + Constants.FileExtensions.SumFile; @@ -26,6 +130,10 @@ namespace TUGraz.VectoCore.Tests.Integration jobContainer.AddRuns(factory); jobContainer.Execute(); + + foreach (var run in jobContainer.Runs) { + Assert.IsTrue(run.Run.FinishedWithoutErrors); + } } } } \ No newline at end of file diff --git a/VectoCoreTest/Integration/SimpleDrivingCycles.cs b/VectoCoreTest/Integration/SimpleDrivingCycles.cs index 04460f5dc3b97922af049529e4de5b5a12f922ee..2498579e040b80834f56d3db847de394e6e8e270 100644 --- a/VectoCoreTest/Integration/SimpleDrivingCycles.cs +++ b/VectoCoreTest/Integration/SimpleDrivingCycles.cs @@ -2,6 +2,7 @@ using System.IO; using TUGraz.VectoCore.FileIO.Reader; using TUGraz.VectoCore.Models.SimulationComponent.Data; +using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.Tests.Integration { @@ -653,5 +654,12 @@ namespace TUGraz.VectoCore.Tests.Integration }; #endregion + + public static DrivingCycleData ReadDeclarationCycle(string missionType) + { + var cycleData = RessourceHelper.ReadStream(RessourceHelper.Namespace + "MissionCycles." + missionType + ".vdri"); + var cycle = DrivingCycleDataReader.ReadFromStream(cycleData, CycleType.DistanceBased); + return cycle; + } } } \ No newline at end of file diff --git a/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs index 6a918de1e181750f609da95f5d85d01f794058cd..87ebc5eed8d5a4318c0437f670f1b9352fc928c2 100644 --- a/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs +++ b/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs @@ -453,7 +453,7 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration public void EqualAcceleration(AccelerationCurveData data, double velocity, double acceleration, double deceleration) { - var entry = data.Lookup(velocity.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>()); + var entry = data.Lookup(velocity.KMPHtoMeterPerSecond()); Assert.AreEqual(entry.Acceleration.Value(), acceleration, Tolerance); Assert.AreEqual(entry.Deceleration.Value(), deceleration, Tolerance); } diff --git a/VectoCoreTest/Models/SimulationComponentData/AccelerationCurveTest.cs b/VectoCoreTest/Models/SimulationComponentData/AccelerationCurveTest.cs index 508f6bbf0d2df364068ad4d1b59de4dcaa296955..1d10e2d5fb3e73d2b4083559dea63212dbd0581b 100644 --- a/VectoCoreTest/Models/SimulationComponentData/AccelerationCurveTest.cs +++ b/VectoCoreTest/Models/SimulationComponentData/AccelerationCurveTest.cs @@ -12,7 +12,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData public void EqualAcceleration(double velocity, double acceleration, double deceleration) { - var entry = Data.Lookup(velocity.SI().Kilo.Meter.Per.Hour.Cast<MeterPerSecond>()); + var entry = Data.Lookup(velocity.KMPHtoMeterPerSecond()); Assert.AreEqual(entry.Acceleration.Value(), acceleration, Tolerance); Assert.AreEqual(entry.Deceleration.Value(), deceleration, Tolerance); } diff --git a/VectoCoreTest/Utils/SITest.cs b/VectoCoreTest/Utils/SITest.cs index 65e5027efd29db6ff454adefda8857908695046d..c25adf4e0a40a09f81daee24e47f855c8173ec0c 100644 --- a/VectoCoreTest/Utils/SITest.cs +++ b/VectoCoreTest/Utils/SITest.cs @@ -47,7 +47,9 @@ namespace TUGraz.VectoCore.Tests.Utils var angVeloSum = angularVelocity + angularVelocity2; Assert.IsInstanceOfType(angVeloSum, typeof(PerSecond)); Assert.AreEqual((400.0 + 600) / 60 * 2 * Math.PI, angVeloSum.Value(), 0.0000001); - AssertHelper.Exception<VectoException>(() => { var x = 500.SI().Watt + 300.SI().Newton; }); + AssertHelper.Exception<VectoException>(() => { + var x = 500.SI().Watt + 300.SI().Newton; + }); //subtract var angVeloDiff = angularVelocity - angularVelocity2; @@ -77,11 +79,15 @@ namespace TUGraz.VectoCore.Tests.Utils // ConvertTo only allows conversion if the units are correct. - AssertHelper.Exception<VectoException>(() => { var x = 40.SI<Newton>().ConvertTo().Watt; }); + AssertHelper.Exception<VectoException>(() => { + var x = 40.SI<Newton>().ConvertTo().Watt; + }); var res1 = 40.SI<Newton>().ConvertTo().Newton; // Cast only allows the cast if the units are correct. - AssertHelper.Exception<VectoException>(() => { var x = 40.SI().Newton.Cast<Watt>(); }); + AssertHelper.Exception<VectoException>(() => { + var x = 40.SI().Newton.Cast<Watt>(); + }); var res2 = 40.SI().Newton.Cast<Newton>(); } @@ -151,13 +157,21 @@ namespace TUGraz.VectoCore.Tests.Utils Assert.IsTrue(v1 > v2); Assert.IsFalse(v1 < v2); - AssertHelper.Exception<VectoException>(() => { var x = v1 < v4; }, + AssertHelper.Exception<VectoException>(() => { + var x = v1 < v4; + }, "Operator '<' can only operate on SI Objects with the same unit. Got: 600.0000 [Nm] < 100.0000 [W]"); - AssertHelper.Exception<VectoException>(() => { var x = v1 > v4; }, + AssertHelper.Exception<VectoException>(() => { + var x = v1 > v4; + }, "Operator '>' can only operate on SI Objects with the same unit. Got: 600.0000 [Nm] > 100.0000 [W]"); - AssertHelper.Exception<VectoException>(() => { var x = v1 <= v4; }, + AssertHelper.Exception<VectoException>(() => { + var x = v1 <= v4; + }, "Operator '<=' can only operate on SI Objects with the same unit. Got: 600.0000 [Nm] <= 100.0000 [W]"); - AssertHelper.Exception<VectoException>(() => { var x = v1 >= v4; }, + AssertHelper.Exception<VectoException>(() => { + var x = v1 >= v4; + }, "Operator '>=' can only operate on SI Objects with the same unit. Got: 600.0000 [Nm] >= 100.0000 [W]"); SI si = null; @@ -223,7 +237,9 @@ namespace TUGraz.VectoCore.Tests.Utils AssertHelper.AreRelativeEqual(3.SI<NewtonMeter>(), 1.SI<NewtonMeter>() + 2.SI().Newton.Meter); AssertHelper.AreRelativeEqual(-1.SI<NewtonMeter>(), 1.SI<NewtonMeter>() - 2.SI().Newton.Meter); - AssertHelper.Exception<VectoException>(() => { var x = 1.SI().Second - 1.SI<Meter>(); }, + AssertHelper.Exception<VectoException>(() => { + var x = 1.SI().Second - 1.SI<Meter>(); + }, "Operator '-' can only operate on SI Objects with the same unit. Got: 1.0000 [s] - 1.0000 [m]"); }