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].

comments powered by Disqus

Featured

Subscribe on YouTube