Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [Fact]
- public async Task Dispose_Waits_On_Pending_Enqueue_Calls()
- {
- var implResetEvent = new ManualResetEvent(false);
- var implMock = new Mock<TaskQueue.ITaskQueueImpl>();
- implMock.Setup(impl => impl.Enqueue(It.IsAny<Task>()))
- .Callback(() => implResetEvent.WaitOne());
- var delay = TimeSpan.FromSeconds(1);
- var queue = new TaskQueue(implMock.Object);
- var enqueueCompletionSource = new TaskCompletionSource<object>();
- var enqueueTask = Task.Run(
- () => queue.Enqueue(enqueueCompletionSource.Task));
- await Assert.ThrowsAsync<TimeoutException>(
- () => enqueueTask.TimeoutAfter(delay));
- var disposeTask = queue.DisposeAsync();
- await Assert.ThrowsAsync<TimeoutException>(
- () => disposeTask.TimeoutAfter(delay));
- implResetEvent.Set();
- await enqueueTask.TimeoutAfter(delay);
- await disposeTask.TimeoutAfter(delay);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement