diff -r a9a3354b01d4 -r 9c398137c2cb src/test/heap_test.h --- a/src/test/heap_test.h Wed Mar 09 14:06:32 2005 +0000 +++ b/src/test/heap_test.h Wed Mar 09 14:10:21 2005 +0000 @@ -1,11 +1,8 @@ // -+- c++ -+- + #include #include -#include -#include -#include - #include class IntIntMap : public std::vector { @@ -42,6 +39,32 @@ } } +template +void heapIncreaseTest(int n) { + typedef _Heap Heap; + IntIntMap map(n, -1); + + Heap heap(map); + + std::vector v(n); + + for (int i = 0; i < n; ++i) { + v[i] = rand() % 1000; + heap.push(i, v[i]); + } + for (int i = 0; i < n; ++i) { + v[i] += rand() % 1000; + heap.increase(i, v[i]); + } + std::sort(v.begin(), v.end()); + for (int i = 0; i < n; ++i) { + check(v[i] == heap.prio() ,"Wrong order in heap increase test."); + heap.pop(); + } +} + + + template struct DefHeapTraits : public _Traits { typedef _Heap Heap; @@ -76,7 +99,7 @@ } for(NodeIt v(graph); v!=INVALID; ++v) { - if ( dijkstra.reached(v) ) { + if ( dijkstra.reached(v) && dijkstra.pred(v) != INVALID ) { Edge e=dijkstra.pred(v); Node u=graph.source(e); check( dijkstra.dist(v) - dijkstra .dist(u) == length[e],