diff -r d8475431bbbb -r 8e85e6bbefdf test/undir_graph_test.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/undir_graph_test.cc Mon May 23 04:48:14 2005 +0000 @@ -0,0 +1,120 @@ +// -*- C++ -*- + +#include +#include +#include +#include +#include + +#include + +#include "test_tools.h" + + +using namespace lemon; +using namespace lemon::concept; + +void check_concepts() { + typedef UndirGraphExtender UndirListGraphBase; + + typedef IterableUndirGraphExtender< + AlterableUndirGraphExtender > IterableUndirListGraph; + + typedef MappableUndirGraphExtender + MappableUndirListGraph; + + typedef ErasableUndirGraphExtender< + ClearableUndirGraphExtender< + ExtendableUndirGraphExtender > > Graph; + + checkConcept(); + checkConcept(); + checkConcept(); + + checkConcept(); + checkConcept(); + + checkConcept(); + checkConcept(); + + checkConcept(); + checkConcept(); + + checkConcept(); +} + +template +void check_item_counts(Graph &g, int n, int e) { + check(countNodes(g)==n, "Wrong node number."); + check(countEdges(g)==2*e, "Wrong edge number."); +} + +template +void print_items(Graph &g) { + + typedef typename Graph::NodeIt NodeIt; + typedef typename Graph::UndirEdgeIt UEdgeIt; + typedef typename Graph::EdgeIt EdgeIt; + + std::cout << "Nodes" << std::endl; + int i=0; + for(NodeIt it(g); it!=INVALID; ++it, ++i) { + std::cout << " " << i << ": " << g.id(it) << std::endl; + } + + std::cout << "UndirEdge" << std::endl; + i=0; + for(UEdgeIt it(g); it!=INVALID; ++it, ++i) { + std::cout << " " << i << ": " << g.id(it) + << " (" << g.id(g.source(it)) << ", " << g.id(g.target(it)) + << ")" << std::endl; + } + + std::cout << "Edge" << std::endl; + i=0; + for(EdgeIt it(g); it!=INVALID; ++it, ++i) { + std::cout << " " << i << ": " << g.id(it) + << " (" << g.id(g.source(it)) << ", " << g.id(g.target(it)) + << ")" << std::endl; + } + +} + +template +void check_graph() { + + typedef typename Graph::Node Node; + typedef typename Graph::UndirEdge UEdge; + typedef typename Graph::Edge Edge; + typedef typename Graph::NodeIt NodeIt; + typedef typename Graph::UndirEdgeIt UEdgeIt; + typedef typename Graph::EdgeIt EdgeIt; + + Graph g; + + check_item_counts(g,0,0); + + Node + n1 = g.addNode(), + n2 = g.addNode(), + n3 = g.addNode(); + + UEdge + e1 = g.addEdge(n1, n2), + e2 = g.addEdge(n2, n3); + + // print_items(g); + + check_item_counts(g,3,2); + + +} + +int main() { + check_concepts(); + + check_graph(); + check_graph(); + + return 0; +}