Advertisement
Guest User

Untitled

a guest
Nov 20th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. [Fact]
  2. public async Task Dispose_Waits_On_Pending_Enqueue_Calls()
  3. {
  4. var implResetEvent = new ManualResetEvent(false);
  5. var implMock = new Mock<TaskQueue.ITaskQueueImpl>();
  6.  
  7. implMock.Setup(impl => impl.Enqueue(It.IsAny<Task>()))
  8. .Callback(() => implResetEvent.WaitOne());
  9.  
  10. var delay = TimeSpan.FromSeconds(1);
  11. var queue = new TaskQueue(implMock.Object);
  12.  
  13. var enqueueCompletionSource = new TaskCompletionSource<object>();
  14. var enqueueTask = Task.Run(
  15. () => queue.Enqueue(enqueueCompletionSource.Task));
  16.  
  17. await Assert.ThrowsAsync<TimeoutException>(
  18. () => enqueueTask.TimeoutAfter(delay));
  19.  
  20. var disposeTask = queue.DisposeAsync();
  21.  
  22. await Assert.ThrowsAsync<TimeoutException>(
  23. () => disposeTask.TimeoutAfter(delay));
  24.  
  25. implResetEvent.Set();
  26.  
  27. await enqueueTask.TimeoutAfter(delay);
  28. await disposeTask.TimeoutAfter(delay);
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement