1.1 --- a/test/dfs_test.cc Fri Jul 18 17:26:12 2008 +0100
1.2 +++ b/test/dfs_test.cc Mon Jul 21 16:30:28 2008 +0200
1.3 @@ -19,6 +19,8 @@
1.4 #include <lemon/concepts/digraph.h>
1.5 #include <lemon/smart_graph.h>
1.6 #include <lemon/list_graph.h>
1.7 +#include <lemon/lgf_reader.h>
1.8 +
1.9 #include <lemon/dfs.h>
1.10 #include <lemon/path.h>
1.11
1.12 @@ -27,6 +29,30 @@
1.13
1.14 using namespace lemon;
1.15
1.16 +char test_lgf[] =
1.17 + "@nodes\n"
1.18 + "label\n"
1.19 + "0\n"
1.20 + "1\n"
1.21 + "2\n"
1.22 + "3\n"
1.23 + "4\n"
1.24 + "5\n"
1.25 + "6\n"
1.26 + "@arcs\n"
1.27 + " label\n"
1.28 + "0 1 0\n"
1.29 + "1 2 1\n"
1.30 + "2 3 2\n"
1.31 + "1 4 3\n"
1.32 + "4 2 4\n"
1.33 + "4 5 5\n"
1.34 + "5 0 6\n"
1.35 + "6 3 7\n"
1.36 + "@attributes\n"
1.37 + "source 0\n"
1.38 + "target 5\n";
1.39 +
1.40 void checkDfsCompile()
1.41 {
1.42 typedef concepts::Digraph Digraph;
1.43 @@ -39,7 +65,6 @@
1.44 bool b;
1.45 DType::DistMap d(G);
1.46 DType::PredMap p(G);
1.47 - // DType::PredNodeMap pn(G);
1.48
1.49 DType dfs_test(G);
1.50
1.51 @@ -50,7 +75,6 @@
1.52 n = dfs_test.predNode(n);
1.53 d = dfs_test.distMap();
1.54 p = dfs_test.predMap();
1.55 - // pn = dfs_test.predNodeMap();
1.56 b = dfs_test.reached(n);
1.57
1.58 Path<Digraph> pp = dfs_test.path(n);
1.59 @@ -80,10 +104,12 @@
1.60
1.61 Digraph G;
1.62 Node s, t;
1.63 - PetStruct<Digraph> ps = addPetersen(G, 5);
1.64
1.65 - s=ps.outer[2];
1.66 - t=ps.inner[0];
1.67 + std::istringstream input(test_lgf);
1.68 + digraphReader(input, G).
1.69 + node("source", s).
1.70 + node("target", t).
1.71 + run();
1.72
1.73 Dfs<Digraph> dfs_test(G);
1.74 dfs_test.run(s);
1.75 @@ -95,14 +121,16 @@
1.76 check(pathTarget(G, p) == t,"path() found a wrong path.");
1.77
1.78 for(NodeIt v(G); v!=INVALID; ++v) {
1.79 - check(dfs_test.reached(v),"Each node should be reached.");
1.80 - if ( dfs_test.predArc(v)!=INVALID ) {
1.81 - Arc e=dfs_test.predArc(v);
1.82 - Node u=G.source(e);
1.83 - check(u==dfs_test.predNode(v),"Wrong tree.");
1.84 - check(dfs_test.dist(v) - dfs_test.dist(u) == 1,
1.85 - "Wrong distance. (" << dfs_test.dist(u) << "->"
1.86 - <<dfs_test.dist(v) << ')');
1.87 + if (dfs_test.reached(v)) {
1.88 + check(v==s || dfs_test.predArc(v)!=INVALID, "Wrong tree.");
1.89 + if (dfs_test.predArc(v)!=INVALID ) {
1.90 + Arc e=dfs_test.predArc(v);
1.91 + Node u=G.source(e);
1.92 + check(u==dfs_test.predNode(v),"Wrong tree.");
1.93 + check(dfs_test.dist(v) - dfs_test.dist(u) == 1,
1.94 + "Wrong distance. (" << dfs_test.dist(u) << "->"
1.95 + <<dfs_test.dist(v) << ')');
1.96 + }
1.97 }
1.98 }
1.99 }