1.1 --- a/test/graph_test.cc Thu Apr 24 11:56:44 2008 +0200
1.2 +++ b/test/graph_test.cc Thu Apr 24 13:53:09 2008 +0100
1.3 @@ -22,7 +22,7 @@
1.4 // #include <lemon/full_graph.h>
1.5 // #include <lemon/grid_graph.h>
1.6
1.7 -//#include <lemon/graph_utils.h>
1.8 +#include <lemon/graph_utils.h>
1.9
1.10 #include "test_tools.h"
1.11
1.12 @@ -82,46 +82,9 @@
1.13 }
1.14
1.15 template <typename Graph>
1.16 -void print_items(Graph &g) {
1.17 +void check_graph_counts() {
1.18
1.19 - typedef typename Graph::NodeIt NodeIt;
1.20 - typedef typename Graph::EdgeIt EdgeIt;
1.21 - typedef typename Graph::ArcIt ArcIt;
1.22 -
1.23 - std::cout << "Nodes" << std::endl;
1.24 - int i=0;
1.25 - for(NodeIt it(g); it!=INVALID; ++it, ++i) {
1.26 - std::cout << " " << i << ": " << g.id(it) << std::endl;
1.27 - }
1.28 -
1.29 - std::cout << "Edge" << std::endl;
1.30 - i=0;
1.31 - for(EdgeIt it(g); it!=INVALID; ++it, ++i) {
1.32 - std::cout << " " << i << ": " << g.id(it)
1.33 - << " (" << g.id(g.source(it)) << ", " << g.id(g.target(it))
1.34 - << ")" << std::endl;
1.35 - }
1.36 -
1.37 - std::cout << "Arc" << std::endl;
1.38 - i=0;
1.39 - for(ArcIt it(g); it!=INVALID; ++it, ++i) {
1.40 - std::cout << " " << i << ": " << g.id(it)
1.41 - << " (" << g.id(g.source(it)) << ", " << g.id(g.target(it))
1.42 - << ")" << std::endl;
1.43 - }
1.44 -
1.45 -}
1.46 -
1.47 -template <typename Graph>
1.48 -void check_graph() {
1.49 -
1.50 - typedef typename Graph::Node Node;
1.51 - typedef typename Graph::Edge Edge;
1.52 - typedef typename Graph::Arc Arc;
1.53 - typedef typename Graph::NodeIt NodeIt;
1.54 - typedef typename Graph::EdgeIt EdgeIt;
1.55 - typedef typename Graph::ArcIt ArcIt;
1.56 -
1.57 + TEMPLATE_GRAPH_TYPEDEFS(Graph);
1.58 Graph g;
1.59
1.60 check_item_counts(g,0,0);
1.61 @@ -135,11 +98,73 @@
1.62 e1 = g.addEdge(n1, n2),
1.63 e2 = g.addEdge(n2, n3);
1.64
1.65 - // print_items(g);
1.66 -
1.67 check_item_counts(g,3,2);
1.68 }
1.69
1.70 +template <typename Graph>
1.71 +void check_graph_validity() {
1.72 +
1.73 + TEMPLATE_GRAPH_TYPEDEFS(Graph);
1.74 + Graph g;
1.75 +
1.76 + check_item_counts(g,0,0);
1.77 +
1.78 + Node
1.79 + n1 = g.addNode(),
1.80 + n2 = g.addNode(),
1.81 + n3 = g.addNode();
1.82 +
1.83 + Edge
1.84 + e1 = g.addEdge(n1, n2),
1.85 + e2 = g.addEdge(n2, n3);
1.86 +
1.87 + check(g.valid(n1), "Validity check");
1.88 + check(g.valid(e1), "Validity check");
1.89 + check(g.valid(g.direct(e1, true)), "Validity check");
1.90 +
1.91 + check(!g.valid(g.nodeFromId(-1)), "Validity check");
1.92 + check(!g.valid(g.edgeFromId(-1)), "Validity check");
1.93 + check(!g.valid(g.arcFromId(-1)), "Validity check");
1.94 +
1.95 +}
1.96 +
1.97 +template <typename Graph>
1.98 +void check_graph_validity_erase() {
1.99 +
1.100 + TEMPLATE_GRAPH_TYPEDEFS(Graph);
1.101 + Graph g;
1.102 +
1.103 + check_item_counts(g,0,0);
1.104 +
1.105 + Node
1.106 + n1 = g.addNode(),
1.107 + n2 = g.addNode(),
1.108 + n3 = g.addNode();
1.109 +
1.110 + Edge
1.111 + e1 = g.addEdge(n1, n2),
1.112 + e2 = g.addEdge(n2, n3);
1.113 +
1.114 + check(g.valid(n1), "Validity check");
1.115 + check(g.valid(e1), "Validity check");
1.116 + check(g.valid(g.direct(e1, true)), "Validity check");
1.117 +
1.118 + g.erase(n1);
1.119 +
1.120 + check(!g.valid(n1), "Validity check");
1.121 + check(g.valid(n2), "Validity check");
1.122 + check(g.valid(n3), "Validity check");
1.123 + check(!g.valid(e1), "Validity check");
1.124 + check(g.valid(e2), "Validity check");
1.125 +
1.126 + check(!g.valid(g.nodeFromId(-1)), "Validity check");
1.127 + check(!g.valid(g.edgeFromId(-1)), "Validity check");
1.128 + check(!g.valid(g.arcFromId(-1)), "Validity check");
1.129 +
1.130 +}
1.131 +
1.132 +
1.133 +
1.134 // void checkGridGraph(const GridGraph& g, int w, int h) {
1.135 // check(g.width() == w, "Wrong width");
1.136 // check(g.height() == h, "Wrong height");
1.137 @@ -187,8 +212,11 @@
1.138 int main() {
1.139 check_concepts();
1.140
1.141 - check_graph<ListGraph>();
1.142 - check_graph<SmartGraph>();
1.143 + check_graph_counts<ListGraph>();
1.144 + check_graph_counts<SmartGraph>();
1.145 +
1.146 + check_graph_validity_erase<ListGraph>();
1.147 + check_graph_validity<SmartGraph>();
1.148
1.149 // {
1.150 // FullGraph g(5);