public static void test_pq_debuggable() { int MAXID = 10; IndexPriorityQueue QIndex = new IndexPriorityQueue(MAXID); DynamicPriorityQueue <TestDynamicNode> QDynamic = new DynamicPriorityQueue <TestDynamicNode>(); TestDynamicNode[] dyn_nodes = new TestDynamicNode[MAXID]; bool verbose = false; //int n = 1; for (int i = 0; i < MAXID; ++i) { //n = (n + 17) % 17; int id = i; float priority = 1.0f - (float)i / 10.0f; QIndex.Enqueue(id, priority); if (verbose) { System.Console.WriteLine("i = {0}", i); } QIndex.DebugPrint(); if (verbose) { System.Console.WriteLine("---", i); } dyn_nodes[i] = new TestDynamicNode() { id = id }; QDynamic.Enqueue(dyn_nodes[i], priority); QDynamic.DebugPrint(); } System.Console.WriteLine("Dequeing..."); for (int i = 0; i < MAXID; ++i) { float newp = (float)((i + MAXID / 2) % MAXID) / 10.0f; QIndex.Update(i, newp); QDynamic.Update(dyn_nodes[i], newp); //System.Console.WriteLine("UPDATE {0} {1}", QIndex.First, QDynamic.First.id); //QIndex.DebugPrint(); //System.Console.WriteLine("---", i); //QDynamic.DebugPrint(); Util.gDevAssert(QIndex.First == QDynamic.First.id); } for (int i = 0; i < MAXID; ++i) { int id = QIndex.Dequeue(); var node = QDynamic.Dequeue(); Util.gDevAssert(id == node.id); if (verbose) { System.Console.WriteLine("DEQUEUE {0} {1}", id, node.id); } if (verbose) { QIndex.DebugPrint(); } if (verbose) { System.Console.WriteLine("---", i); } if (verbose) { QDynamic.DebugPrint(); } } }