Ejemplo n.º 1
0
        /// <summary>
        /// Dequeues next item to execute.
        /// </summary>
        /// <returns>Work item.</returns>
        protected override IWorkItem <TAbsolute> DequeueItem()
        {
            IWorkItem <TAbsolute> item = null;

            while (_ready.Count != 0)
            {
                item = _ready.Dequeue();
                if (!item.IsRunnable)
                {
                    _notReady.Add(item);
                }
                else
                {
                    break;
                }
            }

            return(item);
        }
Ejemplo n.º 2
0
        public void HeapBasedPriorityQueue_Simple()
        {
            var queue = new HeapBasedPriorityQueue <int>(Comparer <int> .Default);

            Assert.ThrowsException <InvalidOperationException>(() => queue.Peek());
            Assert.ThrowsException <InvalidOperationException>(() => queue.Dequeue());
            Assert.AreEqual(0, queue.Count);

            queue.Enqueue(2);
            queue.Enqueue(1);
            queue.Enqueue(3);
            queue.Enqueue(4);
            queue.Enqueue(5);

            Assert.AreEqual(5, queue.Count);
            Assert.AreEqual(1, queue.Peek());

            for (var i = 0; i <= 9; i++)
            {
                if (i is >= 1 and <= 5)
                {
                    Assert.IsTrue(queue.Contains(i));
                }