test/digraph_test.cc
changeset 171 02f4d5d9bfd7
parent 107 31a2e6d28f61
child 209 765619b7cbb2
     1.1 --- a/test/digraph_test.cc	Sun Jun 15 22:03:33 2008 +0200
     1.2 +++ b/test/digraph_test.cc	Sun Jun 15 22:05:23 2008 +0200
     1.3 @@ -16,26 +16,21 @@
     1.4   *
     1.5   */
     1.6  
     1.7 -#include <iostream>
     1.8 -#include <vector>
     1.9 -
    1.10  #include <lemon/concepts/digraph.h>
    1.11  #include <lemon/list_graph.h>
    1.12 -//#include <lemon/smart_graph.h>
    1.13 +#include <lemon/smart_graph.h>
    1.14  //#include <lemon/full_graph.h>
    1.15  //#include <lemon/hypercube_graph.h>
    1.16  
    1.17  #include "test_tools.h"
    1.18 -#include "digraph_test.h"
    1.19 -#include "map_test.h"
    1.20 -
    1.21 +#include "graph_test.h"
    1.22 +#include "graph_maps_test.h"
    1.23  
    1.24  using namespace lemon;
    1.25  using namespace lemon::concepts;
    1.26  
    1.27 -
    1.28 -int main() {
    1.29 -  { // checking digraph components
    1.30 +void check_concepts() {
    1.31 +  { // Checking digraph components
    1.32      checkConcept<BaseDigraphComponent, BaseDigraphComponent >();
    1.33  
    1.34      checkConcept<IDableDigraphComponent<>, 
    1.35 @@ -46,37 +41,104 @@
    1.36  
    1.37      checkConcept<MappableDigraphComponent<>, 
    1.38        MappableDigraphComponent<> >();
    1.39 -
    1.40    }
    1.41 -  { // checking skeleton digraphs
    1.42 +  { // Checking skeleton digraph
    1.43      checkConcept<Digraph, Digraph>();
    1.44    }
    1.45 -  { // checking list digraph
    1.46 -    checkConcept<Digraph, ListDigraph >();
    1.47 +  { // Checking ListDigraph
    1.48 +    checkConcept<Digraph, ListDigraph>();
    1.49      checkConcept<AlterableDigraphComponent<>, ListDigraph>();
    1.50      checkConcept<ExtendableDigraphComponent<>, ListDigraph>();
    1.51      checkConcept<ClearableDigraphComponent<>, ListDigraph>();
    1.52      checkConcept<ErasableDigraphComponent<>, ListDigraph>();
    1.53 +    checkDigraphIterators<ListDigraph>();
    1.54 +  }
    1.55 +  { // Checking SmartDigraph
    1.56 +    checkConcept<Digraph, SmartDigraph>();
    1.57 +    checkConcept<AlterableDigraphComponent<>, SmartDigraph>();
    1.58 +    checkConcept<ExtendableDigraphComponent<>, SmartDigraph>();
    1.59 +    checkConcept<ClearableDigraphComponent<>, SmartDigraph>();
    1.60 +    checkDigraphIterators<SmartDigraph>();
    1.61 +  }
    1.62 +//  { // Checking FullDigraph
    1.63 +//    checkConcept<Digraph, FullDigraph>();
    1.64 +//    checkDigraphIterators<FullDigraph>();
    1.65 +//  }
    1.66 +//  { // Checking HyperCubeDigraph
    1.67 +//    checkConcept<Digraph, HyperCubeDigraph>();
    1.68 +//    checkDigraphIterators<HyperCubeDigraph>();
    1.69 +//  }
    1.70 +}
    1.71  
    1.72 +template <typename Digraph>
    1.73 +void check_graph_validity() {
    1.74 +  TEMPLATE_DIGRAPH_TYPEDEFS(Digraph);
    1.75 +  Digraph g;
    1.76 +
    1.77 +  Node
    1.78 +    n1 = g.addNode(),
    1.79 +    n2 = g.addNode(),
    1.80 +    n3 = g.addNode();
    1.81 +
    1.82 +  Arc
    1.83 +    e1 = g.addArc(n1, n2),
    1.84 +    e2 = g.addArc(n2, n3);
    1.85 +
    1.86 +  check(g.valid(n1), "Wrong validity check");
    1.87 +  check(g.valid(e1), "Wrong validity check");
    1.88 +
    1.89 +  check(!g.valid(g.nodeFromId(-1)), "Wrong validity check");
    1.90 +  check(!g.valid(g.arcFromId(-1)), "Wrong validity check");
    1.91 +}
    1.92 +
    1.93 +template <typename Digraph>
    1.94 +void check_graph_validity_erase() {
    1.95 +  TEMPLATE_DIGRAPH_TYPEDEFS(Digraph);
    1.96 +  Digraph g;
    1.97 +
    1.98 +  Node
    1.99 +    n1 = g.addNode(),
   1.100 +    n2 = g.addNode(),
   1.101 +    n3 = g.addNode();
   1.102 +
   1.103 +  Arc
   1.104 +    e1 = g.addArc(n1, n2),
   1.105 +    e2 = g.addArc(n2, n3);
   1.106 +
   1.107 +  check(g.valid(n1), "Wrong validity check");
   1.108 +  check(g.valid(e1), "Wrong validity check");
   1.109 +
   1.110 +  g.erase(n1);
   1.111 +
   1.112 +  check(!g.valid(n1), "Wrong validity check");
   1.113 +  check(g.valid(n2), "Wrong validity check");
   1.114 +  check(g.valid(n3), "Wrong validity check");
   1.115 +  check(!g.valid(e1), "Wrong validity check");
   1.116 +  check(g.valid(e2), "Wrong validity check");
   1.117 +
   1.118 +  check(!g.valid(g.nodeFromId(-1)), "Wrong validity check");
   1.119 +  check(!g.valid(g.arcFromId(-1)), "Wrong validity check");
   1.120 +}
   1.121 +
   1.122 +void check_digraphs() {
   1.123 +  { // Checking ListDigraph
   1.124      checkDigraph<ListDigraph>();
   1.125      checkGraphNodeMap<ListDigraph>();
   1.126      checkGraphArcMap<ListDigraph>();
   1.127 +
   1.128 +    check_graph_validity_erase<ListDigraph>();
   1.129    }
   1.130 -//   { // checking smart digraph
   1.131 -//     checkConcept<Digraph, SmartDigraph >();
   1.132 +  { // Checking SmartDigraph
   1.133 +    checkDigraph<SmartDigraph>();
   1.134 +    checkGraphNodeMap<SmartDigraph>();
   1.135 +    checkGraphArcMap<SmartDigraph>();
   1.136  
   1.137 -//     checkDigraph<SmartDigraph>();
   1.138 -//     checkDigraphNodeMap<SmartDigraph>();
   1.139 -//     checkDigraphArcMap<SmartDigraph>();
   1.140 -//   }
   1.141 -//   { // checking full digraph
   1.142 -//     checkConcept<Digraph, FullDigraph >();
   1.143 -//   }
   1.144 -//   { // checking full digraph
   1.145 -//     checkConcept<Digraph, HyperCubeDigraph >();
   1.146 -//   }
   1.147 +    check_graph_validity<SmartDigraph>();
   1.148 +  }
   1.149 +}
   1.150  
   1.151 -  std::cout << __FILE__ ": All tests passed.\n";
   1.152 -
   1.153 +int main() {
   1.154 +  check_concepts();
   1.155 +  check_digraphs();
   1.156    return 0;
   1.157  }