/* -*- C++ -*- * src/test/graph_test.cc - Part of LEMON, a generic C++ optimization library * * Copyright (C) 2004 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport * (Egervary Combinatorial Optimization Research Group, EGRES). * * Permission to use, modify and distribute this software is granted * provided that this copyright notice appears in all copies. For * precise terms see the accompanying LICENSE file. * * This software is provided "AS IS" with no warranty of any kind, * express or implied, and with no claim as to its suitability for any * purpose. * */ #include #include #include #include #include #include"test_tools.h" #include"graph_test.h" /** \file This test makes consistency checks of list graph structures. G.addNode(), G.addEdge(), G.tail(), G.head() \todo Checks for empty graphs and isolated points. conversion. */ using namespace lemon; template void bidirPetersen(Graph &G) { typedef typename Graph::Edge Edge; typedef typename Graph::EdgeIt EdgeIt; checkGraphEdgeList(G,15); std::vector ee; for(EdgeIt e(G);e!=INVALID;++e) ee.push_back(e); for(typename std::vector::iterator p=ee.begin();p!=ee.end();p++) G.addEdge(G.head(*p),G.tail(*p)); } template void checkPetersen(Graph &G) { typedef typename Graph::Node Node; typedef typename Graph::EdgeIt EdgeIt; typedef typename Graph::NodeIt NodeIt; checkGraphNodeList(G,10); checkGraphEdgeList(G,30); for(NodeIt n(G);n!=INVALID;++n) { checkGraphInEdgeList(G,n,3); checkGraphOutEdgeList(G,n,3); ++n; } } //Compile Graph template void lemon::checkCompileStaticGraph (skeleton::StaticGraph &); template void lemon::checkCompileGraph (skeleton::ExtendableGraph &); template void lemon::checkCompileErasableGraph (skeleton::ErasableGraph &); //Compile SmartGraph template void lemon::checkCompileGraph(SmartGraph &); template void lemon::checkCompileGraphFindEdge(SmartGraph &); //Compile SymSmartGraph template void lemon::checkCompileGraph(SymSmartGraph &); template void lemon::checkCompileGraphFindEdge(SymSmartGraph &); //Compile ListGraph template void lemon::checkCompileGraph(ListGraph &); template void lemon::checkCompileErasableGraph(ListGraph &); template void lemon::checkCompileGraphFindEdge(ListGraph &); //Compile SymListGraph template void lemon::checkCompileGraph(SymListGraph &); template void lemon::checkCompileErasableGraph(SymListGraph &); template void lemon::checkCompileGraphFindEdge(SymListGraph &); //Compile FullGraph template void lemon::checkCompileStaticGraph(FullGraph &); template void lemon::checkCompileGraphFindEdge(FullGraph &); //Compile EdgeSet template void lemon::checkCompileGraph > (EdgeSet &); template void lemon::checkCompileGraphEraseEdge > (EdgeSet &); template void lemon::checkCompileGraphFindEdge > (EdgeSet &); //Compile EdgeSet template void lemon::checkCompileGraph >(EdgeSet &); template void lemon::checkCompileGraphEraseEdge > (EdgeSet &); template void lemon::checkCompileGraphFindEdge > (EdgeSet &); int main() { { SmartGraph G; addPetersen(G); bidirPetersen(G); checkPetersen(G); } { ListGraph G; addPetersen(G); bidirPetersen(G); checkPetersen(G); } { SymSmartGraph G; addPetersen(G); checkPetersen(G); } { SymListGraph G; addPetersen(G); checkPetersen(G); } ///\file ///\todo map tests. ///\todo copy constr tests. std::cout << __FILE__ ": All tests passed.\n"; return 0; }