public async Task Test()
        {
            // Explicitly defined descending order of priorities
            QueuePriority[] descendingPriorities =
            {
                QueuePriority.Higher,
                QueuePriority.Normal,
                QueuePriority.Lower
            };

            var pQueue = new PriorityQueueUC <QueuePriority, string>(descendingPriorities);

            pQueue.Enqueue(QueuePriority.Lower, "1Lower");
            pQueue.Enqueue(QueuePriority.Higher, "1Higher");
            pQueue.Enqueue(QueuePriority.Normal, "1Normal");

            pQueue.Enqueue(QueuePriority.Lower, "2Lower");
            pQueue.Enqueue(QueuePriority.Normal, "2Normal");
            pQueue.Enqueue(QueuePriority.Higher, "2Higher");

            pQueue.Enqueue(QueuePriority.Lower, "3Lower");
            pQueue.Enqueue(QueuePriority.Higher, "3Higher");
            pQueue.Enqueue(QueuePriority.Normal, "3Normal");

            await Task.Run(() => Descending(pQueue));
        }
Beispiel #2
0
        private async Task Descending(PriorityQueueUC <QueuePriority, string> pQueue)
        {
            string dequeued;

            pQueue.TryDequeu(out dequeued);
            Assert.AreEqual("1Higher", dequeued);

            pQueue.TryDequeu(out dequeued);
            Assert.AreEqual("2Higher", dequeued);

            pQueue.TryDequeu(out dequeued);
            Assert.AreEqual("3Higher", dequeued);


            pQueue.TryDequeu(out dequeued);
            Assert.AreEqual("1Normal", dequeued);

            pQueue.TryDequeu(out dequeued);
            Assert.AreEqual("2Normal", dequeued);

            pQueue.TryDequeu(out dequeued);
            Assert.AreEqual("3Normal", dequeued);


            pQueue.TryDequeu(out dequeued);
            Assert.AreEqual("1Lower", dequeued);

            pQueue.TryDequeu(out dequeued);
            Assert.AreEqual("2Lower", dequeued);

            pQueue.TryDequeu(out dequeued);
            Assert.AreEqual("3Lower", dequeued);

            await Task.CompletedTask;
        }
        private void Normal(PriorityQueueUC <QueuePriority, string> pQueue)
        {
            string dequeued;

            pQueue.TryDequeu(out dequeued, QueuePriority.Normal);
            Assert.AreEqual("1Normal", dequeued);

            pQueue.TryDequeu(out dequeued, QueuePriority.Normal);
            Assert.AreEqual("2Normal", dequeued);

            pQueue.TryDequeu(out dequeued, QueuePriority.Normal);
            Assert.AreEqual("3Normal", dequeued);
        }
        private void Lower(PriorityQueueUC <QueuePriority, string> pQueue)
        {
            string dequeued;

            pQueue.TryDequeu(out dequeued, QueuePriority.Lower);
            Assert.AreEqual("1Lower", dequeued);

            pQueue.TryDequeu(out dequeued, QueuePriority.Lower);
            Assert.AreEqual("2Lower", dequeued);

            pQueue.TryDequeu(out dequeued, QueuePriority.Lower);
            Assert.AreEqual("3Lower", dequeued);
        }
        private void Higher(PriorityQueueUC <QueuePriority, string> pQueue)
        {
            string dequeued;

            pQueue.TryDequeu(out dequeued, QueuePriority.Higher);
            Assert.AreEqual("1Higher", dequeued);

            pQueue.TryDequeu(out dequeued, QueuePriority.Higher);
            Assert.AreEqual("2Higher", dequeued);

            pQueue.TryDequeu(out dequeued, QueuePriority.Higher);
            Assert.AreEqual("3Higher", dequeued);
        }