private void TestInsert(IBinaryHeap bh, HeapType ht) { IComparable[] a = Enumerable.Range(0, 50).OrderBy(r => rnd.Next()).Select(x => x as IComparable).ToArray(); IComparable expectedRoot = a[0]; bh.Insert(a[0]); Assert.AreEqual(0, bh.Peek().CompareTo(a[0])); for (int i = 1; i < a.Length; i++) { if (ht == HeapType.MAX_HEAP && a[i].CompareTo(expectedRoot) > 0) { expectedRoot = a[i]; } if (ht == HeapType.MIN_HEAP && a[i].CompareTo(expectedRoot) < 0) { expectedRoot = a[i]; } bh.Insert(a[i]); Assert.AreEqual(expectedRoot, bh.Peek()); } }