public void DecoratorFailsWithSameError() { var waitHandle = new ManualResetEvent(false); var inner = TestHelper.MockResult(true, null).Object; var sut = new WorkerThreadResultDecorator(inner); sut.Completed += (sender, args) => { Assert.IsTrue(args.WasCancelled); waitHandle.Set(); }; sut.Execute(null); waitHandle.WaitOne(3000); }
public void DecoratorFailsWithSameError() { var waitHandle = new ManualResetEvent(false); var error = new Exception("foo"); var inner = TestHelper.MockResult(false, error).Object; var sut = new WorkerThreadResultDecorator(inner); sut.Completed += (sender, args) => { Assert.AreSame(error, args.Error); waitHandle.Set(); }; sut.Execute(null); waitHandle.WaitOne(3000); }
public void InnerResultIsExecutedOnWorkerThread() { int threadId = Thread.CurrentThread.ManagedThreadId; var waitHandle = new ManualResetEvent(false); int?innerThreadId = null; var inner = new DelegateResult(() => { innerThreadId = Thread.CurrentThread.ManagedThreadId; waitHandle.Set(); }); var sut = new WorkerThreadResultDecorator(inner); sut.Execute(null); waitHandle.WaitOne(3000); Assert.IsNotNull(innerThreadId); Assert.AreNotEqual(threadId, innerThreadId.Value); }
public void DecoratorDoesntCompleteOnWorkerThreadWhenContextIsGiven() { var waitHandle = new ManualResetEvent(false); var sendInvoked = false; var contextMock = new Mock <SynchronizationContext>(); contextMock.Setup(x => x.Send(It.IsAny <SendOrPostCallback>(), It.IsAny <object>())) .Callback <SendOrPostCallback, object>((cb, args) => { Assert.IsInstanceOf <ResultCompletionEventArgs>(args); sendInvoked = true; waitHandle.Set(); }); SynchronizationContext.SetSynchronizationContext(contextMock.Object); var inner = new DelegateResult(() => { }); var sut = new WorkerThreadResultDecorator(inner); sut.Execute(null); waitHandle.WaitOne(3000); Assert.IsTrue(sendInvoked); }