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);
        }
Beispiel #2
0
        public void LimitedBlockingQueueCreatesTest()
        {
            var initialItems = new[] { "1", "2", "3" };

            var queue = new LimitedBlockingQueue <string>(initialItems, int.MaxValue);

            Assert.IsNotNull(queue);
        }
Beispiel #3
0
        public void LimitedBlockingQueueTakesAllInitialItemsTest()
        {
            var initialItems = new[] { "1", "2", "3" };

            var queue = new LimitedBlockingQueue <string>(initialItems, int.MaxValue);

            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, dequeuedItems);
        }
Beispiel #4
0
        public void LimitedBlockingQueueSkipsSomeInitialItemsTest()
        {
            var initialItems = new[] { "1", "2", "3" };
            var takeCount    = initialItems.Length - 1;

            var queue = new LimitedBlockingQueue <string>(initialItems, takeCount);

            var dequeuedItems = new Collection <string>();

            while (!queue.IsCompleted)
            {
                string item;
                Assert.IsTrue(queue.TryDequeue(out item), "Can't' get next after '{0}'", dequeuedItems.LastOrDefault());

                dequeuedItems.Add(item);

                queue.ReleaseItem(item);
            }

            CollectionAssert.AreEqual(initialItems.Take(takeCount), dequeuedItems);
        }