// -*- 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; }