public void TestWaitingJob() { var sw = new DebugStopwatch(); var queue = new LongJobQueue(sw); var tcs = new TaskCompletionSource <object>(); var job = new WaitingJob(tcs.Task); queue.EnqueueJob(job); queue.Process(); Assert.That(job.Status, Is.EqualTo(JobStatus.Waiting)); queue.Process(); Assert.That(job.Status, Is.EqualTo(JobStatus.Waiting)); tcs.SetResult(1); queue.Process(); Assert.That(job.Status, Is.EqualTo(JobStatus.Finished)); Assert.That(job.Result, Is.EqualTo("oof!")); }
public void TestLongJobCancel() { var swA = new DebugStopwatch(); var swB = new DebugStopwatch(); var queue = new LongJobQueue(swB); var cts = new CancellationTokenSource(); var job = new LongJob(swA, swB, cts.Token); queue.EnqueueJob(job); queue.Process(); Assert.That(job.Status, Is.EqualTo(JobStatus.Paused)); queue.Process(); Assert.That(job.Status, Is.EqualTo(JobStatus.Paused)); cts.Cancel(); queue.Process(); Assert.That(job.Status, Is.EqualTo(JobStatus.Finished)); Assert.That((float)job.DebugTime, new ApproxEqualityConstraint(2.0f)); Assert.That(job.Result, Is.Null); }
public void TestLongJob() { var swA = new DebugStopwatch(); var swB = new DebugStopwatch(); var queue = new LongJobQueue(swB); var job = new LongJob(swA, swB); queue.EnqueueJob(job); queue.Process(); Assert.That(job.Status, Is.EqualTo(JobStatus.Paused)); Assert.That((float)job.DebugTime, new ApproxEqualityConstraint(1f)); queue.Process(); Assert.That(job.Status, Is.EqualTo(JobStatus.Paused)); Assert.That((float)job.DebugTime, new ApproxEqualityConstraint(2f)); queue.Process(); Assert.That(job.Status, Is.EqualTo(JobStatus.Finished)); Assert.That(job.Result, Is.EqualTo("foo!")); Assert.That((float)job.DebugTime, new ApproxEqualityConstraint(2.4f)); }