public virtual BinaryHeapPriorityQueue <E> DeepCopy(MapFactory <E, BinaryHeapPriorityQueue.Entry <E> > mapFactory) { BinaryHeapPriorityQueue <E> queue = new BinaryHeapPriorityQueue <E>(mapFactory); foreach (BinaryHeapPriorityQueue.Entry <E> entry in keyToEntry.Values) { queue.RelaxPriority(entry.key, entry.priority); } return(queue); }
protected internal static void RunRelaxingTests(BinaryHeapPriorityQueue <string> queue) { queue.Add("a", 1.0); NUnit.Framework.Assert.AreEqual("Added a:1", "[a=1.0]", queue.ToString()); queue.Add("b", 2.0); NUnit.Framework.Assert.AreEqual("Added b:2", "[b=2.0, a=1.0]", queue.ToString()); queue.Add("c", 1.5); NUnit.Framework.Assert.AreEqual("Added c:1.5", "[b=2.0, c=1.5, a=1.0]", queue.ToString()); queue.RelaxPriority("a", 3.0); NUnit.Framework.Assert.AreEqual("Increased a to 3", "[a=3.0, b=2.0, c=1.5]", queue.ToString()); queue.DecreasePriority("b", 0.0); NUnit.Framework.Assert.AreEqual("Decreased b to 0", "[a=3.0, c=1.5, b=0.0]", queue.ToString()); NUnit.Framework.Assert.AreEqual("removeFirst()", "a", queue.RemoveFirst()); NUnit.Framework.Assert.AreEqual("queue", "[c=1.5, b=0.0]", queue.ToString()); NUnit.Framework.Assert.AreEqual("removeFirst()", "c", queue.RemoveFirst()); NUnit.Framework.Assert.AreEqual("queue", "[b=0.0]", queue.ToString()); NUnit.Framework.Assert.AreEqual("removeFirst()", "b", queue.RemoveFirst()); NUnit.Framework.Assert.IsTrue(queue.IsEmpty()); }