1.1 --- a/test/graph_test.cc Sun Jun 15 22:03:33 2008 +0200
1.2 +++ b/test/graph_test.cc Sun Jun 15 22:05:23 2008 +0200
1.3 @@ -22,17 +22,15 @@
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 -
1.9 #include "test_tools.h"
1.10 -
1.11 +#include "graph_test.h"
1.12 +#include "graph_maps_test.h"
1.13
1.14 using namespace lemon;
1.15 using namespace lemon::concepts;
1.16
1.17 void check_concepts() {
1.18 -
1.19 - { // checking digraph components
1.20 + { // Checking graph components
1.21 checkConcept<BaseGraphComponent, BaseGraphComponent >();
1.22
1.23 checkConcept<IDableGraphComponent<>,
1.24 @@ -43,52 +41,40 @@
1.25
1.26 checkConcept<MappableGraphComponent<>,
1.27 MappableGraphComponent<> >();
1.28 -
1.29 }
1.30 - {
1.31 - checkConcept<Graph, ListGraph>();
1.32 - checkConcept<Graph, SmartGraph>();
1.33 -// checkConcept<Graph, FullGraph>();
1.34 -// checkConcept<Graph, Graph>();
1.35 -// checkConcept<Graph, GridGraph>();
1.36 + { // Checking skeleton graph
1.37 + checkConcept<Graph, Graph>();
1.38 }
1.39 + { // Checking ListGraph
1.40 + checkConcept<Graph, ListGraph>();
1.41 + checkConcept<AlterableGraphComponent<>, ListGraph>();
1.42 + checkConcept<ExtendableGraphComponent<>, ListGraph>();
1.43 + checkConcept<ClearableGraphComponent<>, ListGraph>();
1.44 + checkConcept<ErasableGraphComponent<>, ListGraph>();
1.45 + checkGraphIterators<ListGraph>();
1.46 + }
1.47 + { // Checking SmartGraph
1.48 + checkConcept<Graph, SmartGraph>();
1.49 + checkConcept<AlterableGraphComponent<>, SmartGraph>();
1.50 + checkConcept<ExtendableGraphComponent<>, SmartGraph>();
1.51 + checkConcept<ClearableGraphComponent<>, SmartGraph>();
1.52 + checkGraphIterators<SmartGraph>();
1.53 + }
1.54 +// { // Checking FullGraph
1.55 +// checkConcept<Graph, FullGraph>();
1.56 +// checkGraphIterators<FullGraph>();
1.57 +// }
1.58 +// { // Checking GridGraph
1.59 +// checkConcept<Graph, GridGraph>();
1.60 +// checkGraphIterators<GridGraph>();
1.61 +// }
1.62 }
1.63
1.64 template <typename Graph>
1.65 -void check_item_counts(Graph &g, int n, int e) {
1.66 - int nn = 0;
1.67 - for (typename Graph::NodeIt it(g); it != INVALID; ++it) {
1.68 - ++nn;
1.69 - }
1.70 -
1.71 - check(nn == n, "Wrong node number.");
1.72 - // check(countNodes(g) == n, "Wrong node number.");
1.73 -
1.74 - int ee = 0;
1.75 - for (typename Graph::ArcIt it(g); it != INVALID; ++it) {
1.76 - ++ee;
1.77 - }
1.78 -
1.79 - check(ee == 2*e, "Wrong arc number.");
1.80 - // check(countArcs(g) == 2*e, "Wrong arc number.");
1.81 -
1.82 - int uee = 0;
1.83 - for (typename Graph::EdgeIt it(g); it != INVALID; ++it) {
1.84 - ++uee;
1.85 - }
1.86 -
1.87 - check(uee == e, "Wrong edge number.");
1.88 - // check(countEdges(g) == e, "Wrong edge number.");
1.89 -}
1.90 -
1.91 -template <typename Graph>
1.92 -void check_graph_counts() {
1.93 -
1.94 +void check_graph_validity() {
1.95 TEMPLATE_GRAPH_TYPEDEFS(Graph);
1.96 Graph g;
1.97
1.98 - check_item_counts(g,0,0);
1.99 -
1.100 Node
1.101 n1 = g.addNode(),
1.102 n2 = g.addNode(),
1.103 @@ -98,17 +84,20 @@
1.104 e1 = g.addEdge(n1, n2),
1.105 e2 = g.addEdge(n2, n3);
1.106
1.107 - check_item_counts(g,3,2);
1.108 + check(g.valid(n1), "Wrong validity check");
1.109 + check(g.valid(e1), "Wrong validity check");
1.110 + check(g.valid(g.direct(e1, true)), "Wrong validity check");
1.111 +
1.112 + check(!g.valid(g.nodeFromId(-1)), "Wrong validity check");
1.113 + check(!g.valid(g.edgeFromId(-1)), "Wrong validity check");
1.114 + check(!g.valid(g.arcFromId(-1)), "Wrong validity check");
1.115 }
1.116
1.117 template <typename Graph>
1.118 -void check_graph_validity() {
1.119 -
1.120 +void check_graph_validity_erase() {
1.121 TEMPLATE_GRAPH_TYPEDEFS(Graph);
1.122 Graph g;
1.123
1.124 - check_item_counts(g,0,0);
1.125 -
1.126 Node
1.127 n1 = g.addNode(),
1.128 n2 = g.addNode(),
1.129 @@ -118,53 +107,23 @@
1.130 e1 = g.addEdge(n1, n2),
1.131 e2 = g.addEdge(n2, n3);
1.132
1.133 - check(g.valid(n1), "Validity check");
1.134 - check(g.valid(e1), "Validity check");
1.135 - check(g.valid(g.direct(e1, true)), "Validity check");
1.136 -
1.137 - check(!g.valid(g.nodeFromId(-1)), "Validity check");
1.138 - check(!g.valid(g.edgeFromId(-1)), "Validity check");
1.139 - check(!g.valid(g.arcFromId(-1)), "Validity check");
1.140 -
1.141 -}
1.142 -
1.143 -template <typename Graph>
1.144 -void check_graph_validity_erase() {
1.145 -
1.146 - TEMPLATE_GRAPH_TYPEDEFS(Graph);
1.147 - Graph g;
1.148 -
1.149 - check_item_counts(g,0,0);
1.150 -
1.151 - Node
1.152 - n1 = g.addNode(),
1.153 - n2 = g.addNode(),
1.154 - n3 = g.addNode();
1.155 -
1.156 - Edge
1.157 - e1 = g.addEdge(n1, n2),
1.158 - e2 = g.addEdge(n2, n3);
1.159 -
1.160 - check(g.valid(n1), "Validity check");
1.161 - check(g.valid(e1), "Validity check");
1.162 - check(g.valid(g.direct(e1, true)), "Validity check");
1.163 + check(g.valid(n1), "Wrong validity check");
1.164 + check(g.valid(e1), "Wrong validity check");
1.165 + check(g.valid(g.direct(e1, true)), "Wrong validity check");
1.166
1.167 g.erase(n1);
1.168
1.169 - check(!g.valid(n1), "Validity check");
1.170 - check(g.valid(n2), "Validity check");
1.171 - check(g.valid(n3), "Validity check");
1.172 - check(!g.valid(e1), "Validity check");
1.173 - check(g.valid(e2), "Validity check");
1.174 + check(!g.valid(n1), "Wrong validity check");
1.175 + check(g.valid(n2), "Wrong validity check");
1.176 + check(g.valid(n3), "Wrong validity check");
1.177 + check(!g.valid(e1), "Wrong validity check");
1.178 + check(g.valid(e2), "Wrong validity check");
1.179
1.180 - check(!g.valid(g.nodeFromId(-1)), "Validity check");
1.181 - check(!g.valid(g.edgeFromId(-1)), "Validity check");
1.182 - check(!g.valid(g.arcFromId(-1)), "Validity check");
1.183 -
1.184 + check(!g.valid(g.nodeFromId(-1)), "Wrong validity check");
1.185 + check(!g.valid(g.edgeFromId(-1)), "Wrong validity check");
1.186 + check(!g.valid(g.arcFromId(-1)), "Wrong validity check");
1.187 }
1.188
1.189 -
1.190 -
1.191 // void checkGridGraph(const GridGraph& g, int w, int h) {
1.192 // check(g.width() == w, "Wrong width");
1.193 // check(g.height() == h, "Wrong height");
1.194 @@ -209,27 +168,36 @@
1.195 // }
1.196 // }
1.197
1.198 +void check_graphs() {
1.199 + { // Checking ListGraph
1.200 + checkGraph<ListGraph>();
1.201 + checkGraphNodeMap<ListGraph>();
1.202 + checkGraphEdgeMap<ListGraph>();
1.203 +
1.204 + check_graph_validity_erase<ListGraph>();
1.205 + }
1.206 + { // Checking SmartGraph
1.207 + checkGraph<SmartGraph>();
1.208 + checkGraphNodeMap<SmartGraph>();
1.209 + checkGraphEdgeMap<SmartGraph>();
1.210 +
1.211 + check_graph_validity<SmartGraph>();
1.212 + }
1.213 +// { // Checking FullGraph
1.214 +// FullGraph g(5);
1.215 +// checkGraphNodeList(g, 5);
1.216 +// checkGraphEdgeList(g, 10);
1.217 +// }
1.218 +// { // Checking GridGraph
1.219 +// GridGraph g(5, 6);
1.220 +// checkGraphNodeList(g, 30);
1.221 +// checkGraphEdgeList(g, 49);
1.222 +// checkGridGraph(g, 5, 6);
1.223 +// }
1.224 +}
1.225 +
1.226 int main() {
1.227 check_concepts();
1.228 -
1.229 - check_graph_counts<ListGraph>();
1.230 - check_graph_counts<SmartGraph>();
1.231 -
1.232 - check_graph_validity_erase<ListGraph>();
1.233 - check_graph_validity<SmartGraph>();
1.234 -
1.235 -// {
1.236 -// FullGraph g(5);
1.237 -// check_item_counts(g, 5, 10);
1.238 -// }
1.239 -
1.240 -// {
1.241 -// GridGraph g(5, 6);
1.242 -// check_item_counts(g, 30, 49);
1.243 -// checkGridGraph(g, 5, 6);
1.244 -// }
1.245 -
1.246 - std::cout << __FILE__ ": All tests passed.\n";
1.247 -
1.248 + check_graphs();
1.249 return 0;
1.250 }