Changes in test/dijkstra_test.cc [228:b6732e0d38c5:210:81cfc04531e8] in lemon-main
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
test/dijkstra_test.cc
r228 r210 20 20 #include <lemon/smart_graph.h> 21 21 #include <lemon/list_graph.h> 22 #include <lemon/lgf_reader.h> 23 22 #include <lemon/graph_utils.h> 24 23 #include <lemon/dijkstra.h> 25 24 #include <lemon/path.h> … … 29 28 30 29 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";52 30 53 31 void checkDijkstraCompile() … … 108 86 Node s, t; 109 87 LengthMap length(G); 88 PetStruct<Digraph> ps = addPetersen(G, 5); 110 89 111 std::istringstream input(test_lgf); 112 digraphReader(input, G). 113 arcMap("length", length). 114 node("source", s). 115 node("target", t). 116 run(); 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]; 117 97 118 98 Dijkstra<Digraph, LengthMap> … … 120 100 dijkstra_test.run(s); 121 101 122 check(dijkstra_test.dist(t)== 3,"Dijkstra found a wrong path.");102 check(dijkstra_test.dist(t)==13,"Dijkstra found a wrong path."); 123 103 124 104 Path<Digraph> p = dijkstra_test.path(t); 125 check(p.length()== 3,"getPath() found a wrong path.");105 check(p.length()==4,"getPath() found a wrong path."); 126 106 check(checkPath(G, p),"path() found a wrong path."); 127 107 check(pathSource(G, p) == s,"path() found a wrong path."); … … 137 117 } 138 118 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 } 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])); 150 128 } 151 129 }
Note: See TracChangeset
for help on using the changeset viewer.