/// <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); }
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)); }