/// <summary> /// Checks for runnable Operations in Queue /// </summary> public void CheckQueue() { DateTime currentInstant = DateTime.Now; List <OperationContext> runnableOperations = new List <OperationContext>(); lock (queuedOperations) { while (queuedOperations.Count > 0 && queuedOperations.Peek().RunDate < currentInstant) { runnableOperations.Add(queuedOperations.Dequeue()); } } foreach (OperationContext operation in runnableOperations) { RunOperation(operation); } lock (queuedOperations) { foreach (OperationContext operation in runnableOperations) { OperationContext x = operation.GetNext(); if (x != null) { queuedOperations.Enqueue(x); } } if (queuedOperations.Count > 0) { if (queuedOperations.Peek().RunDate < currentInstant) { CheckQueue(); } else { NextRunDate = queuedOperations.Min(x => x.RunDate); } } } }
public void TestExampleHeapQueue() { PriorityQueue <double, int> queue = new HeapPriorityQueue <double, int>(); int[] elements = new int[] { 4, 9, 8, 7, 3, 22, 4, 9, -20, -40, -100, 102, 4, 5 }; for (int i = 0; i < elements.Length; i++) { queue.Enqueue(elements[i], elements[i]); } Assert.AreEqual(queue.Count, elements.Length); int[] expected = new int[] { 102, 22, 9, 9, 8, 7, 5, 4, 4, 4, 3, -20, -40, -100 }; for (int i = 0; i < expected.Length; i++) { Assert.AreEqual(expected[i], queue.Peek()); Assert.AreEqual(expected[i], queue.Dequeue()); } Assert.AreEqual(queue.Count, 0); Assert.IsTrue(queue.IsEmpty()); }
public void HeapPriorityQueuePeekTest() { HeapPriorityQueue<int> queue = new HeapPriorityQueue<int> (10); queue.Enqueue (5, 3); queue.Enqueue (6, 2); Assert.AreEqual (6, queue.Peek ()); Assert.AreEqual (2, queue.Count); }
public void HeapPriorityQueuePeekEmptyTest() { HeapPriorityQueue<int> queue = new HeapPriorityQueue<int> (10); Assert.AreEqual (0, queue.Peek()); }