public void LimitedBlockingQueueSkipsSomeEnqueuedItemsTest() { var initialItems = new[] { "1", "2", "3" }; var takeCount = initialItems.Length + 1; const string addedItem = "4"; const string missedItem = "5"; var queue = new LimitedBlockingQueue <string>(initialItems, takeCount); Assert.IsTrue(queue.TryEnqueue(addedItem)); Assert.IsFalse(queue.TryEnqueue(missedItem)); var dequeuedItems = new Collection <string>(); while (!queue.IsCompleted) { string item; Assert.IsTrue(queue.TryDequeue(out item)); dequeuedItems.Add(item); queue.ReleaseItem(item); } CollectionAssert.AreEqual(initialItems.Union(new[] { addedItem }), dequeuedItems); }