Priority Queues with C#: Listing 6.
Testing a priority queue.
static void TestPriorityQueue(int numOperations)
{
Random rand = new Random(0);
PriorityQueue <Employee > pq =
new PriorityQueue <Employee >();
for (int op = 0; op < numOperations; ++op)
{
int opType = rand.Next(0, 2);
if (opType == 0) // enqueue
{
string lastName = op + "man";
double priority =
(100.0 - 1.0) * rand.NextDouble() + 1.0;
pq.Enqueue(new Employee(lastName, priority));
if (pq.IsConsistent() == false)
{
Console.WriteLine(
"Test fails after enqueue operation # " + op);
}
}
else // Dequeue
{
if (pq.Count() > 0)
{
Employee e = pq.Dequeue();
if (pq.IsConsistent() == false)
{
Console.WriteLine(
"Test fails after dequeue operation # " + op);
}
}
}
} // for
Console.WriteLine("\nAll tests passed");
}
About the Author
Dr. James McCaffrey works for Microsoft Research in Redmond, Wash. He has worked on several Microsoft products including Azure and Bing. James can be reached at [email protected].