test/graph_test.cc
changeset 171 02f4d5d9bfd7
parent 149 2f7ae34e1333
child 209 765619b7cbb2
     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  }