Files
ICD.Common.Utils/ICD.Common.Utils.Tests/Timers/SafeTimerTest.cs

95 lines
1.5 KiB
C#

using ICD.Common.Utils.Timers;
using NUnit.Framework;
namespace ICD.Common.Utils.Tests.Timers
{
[TestFixture]
public sealed class SafeTimerTest
{
[Test]
public void DisposeTest()
{
bool called = false;
SafeTimer timer = SafeTimer.Stopped(() => called = true);
// Crestron timer tends to execute the callback on stop.
timer.Dispose();
Assert.IsFalse(called);
}
[Test]
public void StoppedTest()
{
bool called = false;
SafeTimer timer = SafeTimer.Stopped(() => called = true);
Assert.IsFalse(called);
timer.Dispose();
}
[Test]
public void StopTest()
{
bool called = false;
SafeTimer timer = SafeTimer.Stopped(() => called = true);
ThreadingUtils.Sleep(200);
Assert.IsFalse(called);
timer.Reset(100);
timer.Stop();
ThreadingUtils.Sleep(200);
Assert.IsFalse(called);
timer.Dispose();
}
[Test]
public void TriggerTest()
{
int called = 0;
SafeTimer timer = SafeTimer.Stopped(() => called++);
timer.Trigger();
ThreadingUtils.Sleep(50);
Assert.AreEqual(1, called);
timer.Dispose();
}
[Test]
public void ResetTest()
{
int called = 0;
SafeTimer timer = SafeTimer.Stopped(() => called++);
timer.Reset(10);
ThreadingUtils.Sleep(50);
Assert.AreEqual(1, called);
timer.Dispose();
}
[Test]
public void ResetRepeatTest()
{
int called = 0;
SafeTimer timer = SafeTimer.Stopped(() => called++);
timer.Reset(100, 100);
ThreadingUtils.Sleep(500);
Assert.AreEqual(4, called, 2);
timer.Dispose();
}
}
}