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 }