Changes in test/dijkstra_test.cc [210:81cfc04531e8:228:b6732e0d38c5] in lemon-main
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
test/dijkstra_test.cc
r210 r228 20 20 #include <lemon/smart_graph.h> 21 21 #include <lemon/list_graph.h> 22 #include <lemon/graph_utils.h> 22 #include <lemon/lgf_reader.h> 23 23 24 #include <lemon/dijkstra.h> 24 25 #include <lemon/path.h> … … 28 29 29 30 using namespace lemon; 31 32 char test_lgf[] = 33 "@nodes\n" 34 "label\n" 35 "0\n" 36 "1\n" 37 "2\n" 38 "3\n" 39 "4\n" 40 "@arcs\n" 41 " label length\n" 42 "0 1 0 1\n" 43 "1 2 1 1\n" 44 "2 3 2 1\n" 45 "0 3 4 5\n" 46 "0 3 5 10\n" 47 "0 3 6 7\n" 48 "4 2 7 1\n" 49 "@attributes\n" 50 "source 0\n" 51 "target 3\n"; 30 52 31 53 void checkDijkstraCompile() … … 86 108 Node s, t; 87 109 LengthMap length(G); 88 PetStruct<Digraph> ps = addPetersen(G, 5);89 110 90 for(int i=0;i<5;i++) { 91 length[ps.outcir[i]]=4; 92 length[ps.incir[i]]=1; 93 length[ps.chords[i]]=10; 94 } 95 s=ps.outer[0]; 96 t=ps.inner[1]; 111 std::istringstream input(test_lgf); 112 digraphReader(input, G). 113 arcMap("length", length). 114 node("source", s). 115 node("target", t). 116 run(); 97 117 98 118 Dijkstra<Digraph, LengthMap> … … 100 120 dijkstra_test.run(s); 101 121 102 check(dijkstra_test.dist(t)== 13,"Dijkstra found a wrong path.");122 check(dijkstra_test.dist(t)==3,"Dijkstra found a wrong path."); 103 123 104 124 Path<Digraph> p = dijkstra_test.path(t); 105 check(p.length()== 4,"getPath() found a wrong path.");125 check(p.length()==3,"getPath() found a wrong path."); 106 126 check(checkPath(G, p),"path() found a wrong path."); 107 127 check(pathSource(G, p) == s,"path() found a wrong path."); … … 117 137 } 118 138 119 for(NodeIt v(G); v!=INVALID; ++v){ 120 check(dijkstra_test.reached(v),"Each node should be reached."); 121 if ( dijkstra_test.predArc(v)!=INVALID ) { 122 Arc e=dijkstra_test.predArc(v); 123 Node u=G.source(e); 124 check(u==dijkstra_test.predNode(v),"Wrong tree."); 125 check(dijkstra_test.dist(v) - dijkstra_test.dist(u) == length[e], 126 "Wrong distance! Difference: " << 127 std::abs(dijkstra_test.dist(v)-dijkstra_test.dist(u)-length[e])); 139 for(NodeIt v(G); v!=INVALID; ++v) { 140 if (dijkstra_test.reached(v)) { 141 check(v==s || dijkstra_test.predArc(v)!=INVALID, "Wrong tree."); 142 if (dijkstra_test.predArc(v)!=INVALID ) { 143 Arc e=dijkstra_test.predArc(v); 144 Node u=G.source(e); 145 check(u==dijkstra_test.predNode(v),"Wrong tree."); 146 check(dijkstra_test.dist(v) - dijkstra_test.dist(u) == length[e], 147 "Wrong distance! Difference: " << 148 std::abs(dijkstra_test.dist(v)-dijkstra_test.dist(u)-length[e])); 149 } 128 150 } 129 151 }
Note: See TracChangeset
for help on using the changeset viewer.