Beispiel #1
0
        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);
        }