mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-15 03:30:53 +01:00
Robust.UnitTesting was both ALL tests for RT, and also API surface for content tests. Tests are now split into separate projects as appropriate, and the API side has also been split off.
91 lines
2.5 KiB
C#
91 lines
2.5 KiB
C#
using System;
|
|
using System.Threading;
|
|
using NUnit.Framework;
|
|
using Robust.Shared.Asynchronous;
|
|
using Robust.Shared.IoC;
|
|
using Robust.Shared.Log;
|
|
using Robust.Shared.Timing;
|
|
using Timer = Robust.Shared.Timing.Timer;
|
|
|
|
namespace Robust.UnitTesting.Shared.Timing
|
|
{
|
|
[TestFixture]
|
|
[TestOf(typeof(Timer))]
|
|
internal sealed class TimerTest : OurRobustUnitTest
|
|
{
|
|
private LogCatcher _catcher = default!;
|
|
|
|
[OneTimeSetUp]
|
|
public void InstallLogCatcher()
|
|
{
|
|
var logManager = IoCManager.Resolve<ILogManager>();
|
|
|
|
_catcher = new LogCatcher();
|
|
logManager.GetSawmill("timer").AddHandler(_catcher);
|
|
logManager.GetSawmill("async").AddHandler(_catcher);
|
|
}
|
|
|
|
[Test]
|
|
public void TestSpawn()
|
|
{
|
|
var timerManager = IoCManager.Resolve<ITimerManager>();
|
|
|
|
var fired = false;
|
|
|
|
Timer.Spawn(TimeSpan.FromMilliseconds(500), () => fired = true);
|
|
Assert.That(fired, Is.False);
|
|
|
|
// Set timers ahead 250 ms
|
|
timerManager.UpdateTimers(new FrameEventArgs(.25f));
|
|
Assert.That(fired, Is.False);
|
|
// Another 300ms should do it.
|
|
timerManager.UpdateTimers(new FrameEventArgs(.30f));
|
|
Assert.That(fired, Is.True);
|
|
}
|
|
|
|
[Test]
|
|
public void TestAsyncDelay()
|
|
{
|
|
var timerManager = IoCManager.Resolve<ITimerManager>();
|
|
var ran = false;
|
|
|
|
async void Run()
|
|
{
|
|
await Timer.Delay(TimeSpan.FromMilliseconds(500));
|
|
ran = true;
|
|
}
|
|
|
|
Run();
|
|
Assert.That(ran, Is.False);
|
|
|
|
// Set timers ahead 250 ms
|
|
timerManager.UpdateTimers(new FrameEventArgs(.25f));
|
|
Assert.That(ran, Is.False);
|
|
|
|
// Another 300ms should do it.
|
|
timerManager.UpdateTimers(new FrameEventArgs(.30f));
|
|
Assert.That(ran, Is.True);
|
|
}
|
|
|
|
[Test]
|
|
public void TestCancellation()
|
|
{
|
|
var timerManager = IoCManager.Resolve<ITimerManager>();
|
|
|
|
var cts = new CancellationTokenSource();
|
|
var ran = false;
|
|
Timer.Spawn(1000, () => ran = true, cts.Token);
|
|
|
|
timerManager.UpdateTimers(new FrameEventArgs(.5f));
|
|
|
|
Assert.That(ran, Is.False);
|
|
|
|
cts.Cancel();
|
|
|
|
timerManager.UpdateTimers(new FrameEventArgs(.6f));
|
|
|
|
Assert.That(ran, Is.False);
|
|
}
|
|
}
|
|
}
|