rd-net/Test.Lifetimes/Collections/Viewable/DefaultSchedulerTest.cs (40 lines of code) (raw):
using System;
using System.Threading;
using JetBrains.Collections.Viewable;
using JetBrains.Diagnostics;
using NUnit.Framework;
namespace Test.Lifetimes.Collections.Viewable
{
public class DefaultSchedulerTest : LifetimesTestBase
{
[Test]
public void SimpleTest()
{
var scheduler = DefaultScheduler.Instance;
Assert.IsTrue(scheduler.OutOfOrderExecution);
Assert.IsFalse(scheduler.IsActive);
var thread = Thread.CurrentThread;
var hasValue = new ManualResetEvent(false);
scheduler.Queue(() =>
{
try
{
Assert.IsTrue(scheduler.IsActive);
Assert.AreNotEqual(thread, Thread.CurrentThread);
var executed = false;
scheduler.InvokeOrQueue(() => executed = true);
Assert.IsTrue(executed);
}
catch (Exception e)
{
TestLogger.ExceptionLogger.Error(e);
}
finally
{
hasValue.Set();
}
});
Assert.IsTrue(hasValue.WaitOne(TimeSpan.FromSeconds(1)));
}
}
}