/// <summary>
 /// Testing using a reference data structue and unique randomized double arrray.
 /// </summary>
 /// <param name="size"></param>
 /// <param name="repetition"></param>
 /// <param name="type"></param>
 public void BinaryHeapSuperFancyTest
 (
     int size,
     int repetition,
     PriorityQImplementations type = PriorityQImplementations.SimpleBinaryHeap
 )
 {
 }
        public static IPriorityQ <T> GetInstance <T>
            (PriorityQImplementations type) where T : IComparable <T>
        {
            switch (type)
            {
            case PriorityQImplementations.SimpleBinaryHeap:
                return(new SimpleBinaryHeap <T>());

            case PriorityQImplementations.FancierBinaryHeap:
                return(new FancierBinaryHeap <T>());
            }
            return(null);
        }
 public void BinaryHeapBasic(
     int size,
     int repetition,
     PriorityQImplementations type = PriorityQImplementations.SimpleBinaryHeap
     )
 {
     for (int j = 1; j <= repetition; j++)
     {
         IPriorityQ <int> q         = GetInstance <int>(type);
         int[]            randomarr = GetRandomizedIntSequence(size);
         for (int i = 0; i < randomarr.Length; q.Enqueue(randomarr[i]), i++)
         {
             ;
         }
         for (int i = 0;
              i < randomarr.Length;
              Assert.AreEqual(i + 1, q.RemoveMin()), i++)
         {
             ;
         }
     }
 }