private static string DumpHeap <T>(LazyParingHeap <T> .Heap node, bool showSusp) where T : IComparable <T> { var result = new StringBuilder(); result.Append("["); result.Append(node.Root); if (!LazyParingHeap <T> .IsEmpty(node.List)) { result.Append(", "); result.Append(DumpHeap(node.List, showSusp)); } if (showSusp || node.LazyList.IsValueCreated) { if (!LazyParingHeap <T> .IsEmpty(node.LazyList.Value)) { result.Append("; "); result.Append(DumpHeap(node.LazyList.Value, showSusp)); } } else { result.Append("; susp"); } result.Append("]"); return(result.ToString()); }
public void DeleteLotsOfMinsTest() { const int size = 1000; var random = new Random(3456); var heap = LazyParingHeap <int> .Empty; for (var i = 0; i < size; i++) { heap = LazyParingHeap <int> .Insert(random.Next(size), heap); } var last = 0; var count = 0; while (!LazyParingHeap <int> .IsEmpty(heap)) { var next = LazyParingHeap <int> .FindMin(heap); heap = LazyParingHeap <int> .DeleteMin(heap); Assert.IsTrue(last <= next); last = next; count++; } Assert.AreEqual(size, count); }
public void EmptyTest() { var empty = LazyParingHeap <int> .Empty; Assert.IsTrue(LazyParingHeap <int> .IsEmpty(empty)); var heap = LazyParingHeap <int> .Insert(3, empty); Assert.IsFalse(LazyParingHeap <int> .IsEmpty(heap)); }