public void Capacity_zero_EnqueueAsync_then_DequeueAsync() { var queue = new AsyncBoundedQueue<string>(0); var enqueueTask = queue.EnqueueAsync("A").AssertNotCompleted(); queue.DequeueAsync().AssertResult("A"); enqueueTask.AssertSuccess(); }
public void Capacity_zero_EnqueueAsync_then_TryDequeue() { var queue = new AsyncBoundedQueue<string>(0); var enqueueTask = queue.EnqueueAsync("A").AssertNotCompleted(); string value; Assert.IsTrue(queue.TryDequeue(out value)); Assert.AreEqual("A", value); enqueueTask.AssertSuccess(); }
public void CancelAllEnqueue() { var queue = new AsyncBoundedQueue<string>(0); var tasks = Enumerable.Range(0, 3).Select(_ => queue.EnqueueAsync("A")).ToList(); queue.CancelAllEnqueue().Dispose(); foreach (var task in tasks) { task.AssertCanceled(); } }
public void EnqueueAsync_not_full_canceled() { var queue = new AsyncBoundedQueue<string>(3); queue.EnqueueAsync("A").AssertSuccess(); queue.EnqueueAsync("B").AssertSuccess(); using (var cts = new CancellationTokenSource()) { var task = queue.EnqueueAsync("C", cts.Token); cts.Cancel(); task.AssertSuccess(); } }
public void First_in_first_out() { var queue = new AsyncBoundedQueue<string>(3); var values = new List<string> { "A", "B", "C" }; for (int i = 0; i < values.Count; i++) { queue.EnqueueAsync(values[i]).AssertSuccess(); } for (int i = 0; i < values.Count; i++) { queue.DequeueAsync().AssertResult(values[i]); } }
public void EnqueueAsync_canceled_after_completion() { var queue = new AsyncBoundedQueue<string>(3); using (var cts = new CancellationTokenSource()) { var task = queue.EnqueueAsync("A", cts.Token); cts.Cancel(); task.AssertSuccess(); } }
public void EnqueueAsync_already_canceled() { var queue = new AsyncBoundedQueue<string>(3); var task = queue.EnqueueAsync("A", new CancellationToken(true)); task.AssertCanceled(); }
public void DequeueAsync_handled_in_order_of_caller() { var queue = new AsyncBoundedQueue<string>(3); var values = new List<string> { "A", "B", "C" }; var tasks = values.Select(_ => queue.DequeueAsync()).ToList(); for (int i = 0; i < values.Count; i++) { tasks[i].AssertNotCompleted(); queue.EnqueueAsync(values[i]).AssertSuccess(); tasks[i].AssertResult(values[i]); } }
public void DequeueAsync_before_Enqueue() { var queue = new AsyncBoundedQueue<string>(3); var task = queue.DequeueAsync(); queue.EnqueueAsync("A").AssertSuccess(); task.AssertResult("A"); }
public void Count_nonempty() { var queue = new AsyncBoundedQueue<string>(4); queue.EnqueueAsync("A").AssertSuccess(); queue.EnqueueAsync("B").AssertSuccess(); queue.EnqueueAsync("C").AssertSuccess(); queue.EnqueueAsync("D").AssertSuccess(); queue.DequeueAsync().AssertSuccess(); Assert.AreEqual(3, queue.Count); }