diff -r d8475431bbbb -r 8e85e6bbefdf test/graph_factory_test.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/graph_factory_test.cc Mon May 23 04:48:14 2005 +0000 @@ -0,0 +1,154 @@ +/* -*- C++ -*- + * test/graph_test.cc - Part of LEMON, a generic C++ optimization library + * + * Copyright (C) 2005 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport + * (Egervary Research Group on Combinatorial Optimization, 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 + +#include"test_tools.h" +#include"graph_test.h" + +/** +\file +This test makes consistency checks of list graph structures. + +G.addNode(), G.addEdge(), G.source(), G.target() + +\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.target(*p),G.source(*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); + } +} + +//Compile Graph +template void lemon::concept::checkCompileStaticGraph +(concept::StaticGraph &); + +template +void lemon::concept::checkCompileExtendableGraph +(concept::ExtendableGraph &); + +template +void lemon::concept::checkCompileErasableGraph +(concept::ErasableGraph &); + +//Compile SmartGraph +template +void lemon::concept::checkCompileExtendableGraph(SmartGraph &); +template +void lemon::concept::checkCompileGraphFindEdge(SmartGraph &); + +//Compile SymSmartGraph +//template void hugo::checkCompileGraph(SymSmartGraph &); +//template void hugo::checkCompileGraphFindEdge(SymSmartGraph &); + +//Compile ListGraph +template +void lemon::concept::checkCompileExtendableGraph(ListGraph &); +template +void lemon::concept::checkCompileErasableGraph(ListGraph &); +template +void lemon::concept::checkCompileGraphFindEdge(ListGraph &); + + +//Compile SymListGraph +//template void hugo::checkCompileGraph(SymListGraph &); +//template void hugo::checkCompileErasableGraph(SymListGraph &); +//template void hugo::checkCompileGraphFindEdge(SymListGraph &); + +//Compile FullGraph +template void lemon::concept::checkCompileStaticGraph(FullGraph &); +template +void lemon::concept::checkCompileGraphFindEdge(FullGraph &); + + +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. + + + // Some map tests. + // FIXME: These shouldn't be here. + using namespace concept; + function_requires< ReadMapConcept< ReadMap > >(); + function_requires< WriteMapConcept< WriteMap > >(); + function_requires< ReadWriteMapConcept< ReadWriteMap > >(); + function_requires< ReferenceMapConcept< ReferenceMap > >(); + + + std::cout << __FILE__ ": All tests passed.\n"; + + return 0; +}