public static void Union_NonEmptyHeap_ReturnsSortedOrder() { var oddHeap = new FibonacciHeap <int>(); for (var i = 1; i < 10; i += 2) { oddHeap.Push(i); } var evenHeap = new FibonacciHeap <int>(); for (var i = 0; i < 10; i += 2) { evenHeap.Push(i); } oddHeap.Union(evenHeap); for (var i = 0; i < 10; i++) { Assert.AreEqual(i, oddHeap.Pop()); } Assert.Zero(oddHeap.Count); Assert.Zero(evenHeap.Count); }
public static void Union_EmptyHeap_BecomesOtherHeap() { var thisHeap = new FibonacciHeap <int>(); var otherHeap = BuildTestHeap(); var minNode = otherHeap.Peek(); var otherCount = otherHeap.Count; Assert.Zero(thisHeap.Count); thisHeap.Union(otherHeap); Assert.Zero(otherHeap.Count); Assert.AreEqual(thisHeap.Peek(), minNode); Assert.Throws <InvalidOperationException>(() => otherHeap.Peek()); Assert.AreEqual(otherCount, thisHeap.Count); }
private FibonacciHeap <int> UnionHeap() { InitHeap(); _heap1.Union(_heap2); return(_heap1); }