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, WA. James has worked on several key Microsoft products such as Internet Explorer and Bing. James can be reached at jamccaff@microsoft.com.