Timers get cancellation support.

This commit is contained in:
Pieter-Jan Briers
2019-05-08 09:48:57 +02:00
parent 285f68b4dd
commit 878fade1bd
4 changed files with 60 additions and 17 deletions
+23 -1
View File
@@ -1,12 +1,13 @@
using System;
using System.Linq;
using System.Threading;
using NUnit.Framework;
using Robust.Shared.Asynchronous;
using Robust.Shared.Interfaces.Log;
using Robust.Shared.Interfaces.Timers;
using Robust.Shared.IoC;
using Robust.Shared.Log;
using Robust.Shared.Timers;
using Timer = Robust.Shared.Timers.Timer;
namespace Robust.UnitTesting.Shared.Timers
{
@@ -145,5 +146,26 @@ namespace Robust.UnitTesting.Shared.Timers
Assert.That(threw, Is.True);
Assert.That(DidThrow(), Is.True);
}
[Test]
public void TestCancellation()
{
var timerManager = IoCManager.Resolve<ITimerManager>();
var taskManager = IoCManager.Resolve<ITaskManager>();
var cts = new CancellationTokenSource();
var ran = false;
Timer.Spawn(1000, () => ran = true, cts.Token);
timerManager.UpdateTimers(0.5f);
Assert.That(ran, Is.False);
cts.Cancel();
timerManager.UpdateTimers(0.6f);
Assert.That(ran, Is.False);
}
}
}