public void TryDequeueFromAnyAsync_Empty_DoesNotComplete() { Test.Async(async () => { var queue1 = new AsyncProducerConsumerQueue<int>(); var queue2 = new AsyncProducerConsumerQueue<int>(); var queues = new[] { queue1, queue2 }; var task = queues.TryDequeueFromAnyAsync(); await AssertEx.NeverCompletesAsync(task); }); }
public void TryDequeueFromAnyAsync_Cancelled_Throws() { Test.Async(async () => { var queue1 = new AsyncProducerConsumerQueue<int>(); var queue2 = new AsyncProducerConsumerQueue<int>(); var queues = new[] { queue1, queue2 }; var cts = new CancellationTokenSource(); var task = queues.TryDequeueFromAnyAsync(cts.Token); cts.Cancel(); await AssertEx.ThrowsExceptionAsync<OperationCanceledException>(() => task); }); }
public void TryDequeueFromAnyAsync_EmptyAndComplete_ReturnsFailed() { Test.Async(async () => { var queue1 = new AsyncProducerConsumerQueue<int>(); queue1.CompleteAdding(); var queue2 = new AsyncProducerConsumerQueue<int>(); queue2.CompleteAdding(); var queues = new[] { queue1, queue2 }; var result = await queues.TryDequeueFromAnyAsync(); Assert.IsFalse(result.Success); }); }