//======================================================================= // Copyright 1997, 1998, 1999, 2000 University of Notre Dame. // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) //======================================================================= #include #include #include #include int main(int,char*[]) { using namespace boost; // Check adjacency_list with properties { typedef adjacency_list, property > Graph; typedef graph_traits::vertex_descriptor Vertex; typedef graph_traits::edge_descriptor Edge; BOOST_CONCEPT_ASSERT(( VertexListGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableIncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); } { typedef adjacency_list, property > Graph; typedef graph_traits::vertex_descriptor Vertex; typedef graph_traits::edge_descriptor Edge; BOOST_CONCEPT_ASSERT(( VertexListGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept )); BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); } { typedef adjacency_list< listS, listS, directedS, property, property > Graph; typedef graph_traits::vertex_descriptor Vertex; typedef graph_traits::edge_descriptor Edge; BOOST_CONCEPT_ASSERT(( VertexListGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableIncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); } { typedef adjacency_list< listS, listS, undirectedS, property, property > Graph; typedef graph_traits::vertex_descriptor Vertex; typedef graph_traits::edge_descriptor Edge; BOOST_CONCEPT_ASSERT(( VertexListGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); } // Checking adjacency_list with EdgeList=setS { typedef adjacency_list, property > Graph; typedef graph_traits::vertex_descriptor Vertex; typedef graph_traits::edge_descriptor Edge; BOOST_CONCEPT_ASSERT(( VertexListGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept )); BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); } { typedef adjacency_list< setS, listS, directedS, property, property > Graph; typedef graph_traits::vertex_descriptor Vertex; typedef graph_traits::edge_descriptor Edge; BOOST_CONCEPT_ASSERT(( VertexListGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableIncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); } { typedef adjacency_list< setS, listS, undirectedS, property, property > Graph; typedef graph_traits::vertex_descriptor Vertex; typedef graph_traits::edge_descriptor Edge; BOOST_CONCEPT_ASSERT(( VertexListGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( LvaluePropertyGraphConcept )); } // Check adjacency_list without any properties { typedef adjacency_list Graph; typedef graph_traits::vertex_descriptor Vertex; BOOST_CONCEPT_ASSERT(( VertexListGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableIncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( VertexMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeMutablePropertyGraphConcept )); BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept )); } { typedef adjacency_list Graph; typedef graph_traits::vertex_descriptor Vertex; BOOST_CONCEPT_ASSERT(( VertexListGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept )); BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept )); } { typedef adjacency_list< listS, listS, directedS> Graph; BOOST_CONCEPT_ASSERT(( VertexListGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableIncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); } { typedef adjacency_list< listS, listS, undirectedS> Graph; BOOST_CONCEPT_ASSERT(( VertexListGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); } // Checking EdgeList=setS with no properties { typedef adjacency_list Graph; typedef graph_traits::vertex_descriptor Vertex; BOOST_CONCEPT_ASSERT(( VertexListGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept )); BOOST_CONCEPT_ASSERT(( BidirectionalGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept )); } { typedef adjacency_list< setS, listS, directedS> Graph; BOOST_CONCEPT_ASSERT(( MutableIncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); } { typedef adjacency_list< setS, listS, undirectedS> Graph; BOOST_CONCEPT_ASSERT(( VertexListGraphConcept )); BOOST_CONCEPT_ASSERT(( EdgeListGraphConcept )); BOOST_CONCEPT_ASSERT(( IncidenceGraphConcept )); BOOST_CONCEPT_ASSERT(( AdjacencyGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableBidirectionalGraphConcept )); BOOST_CONCEPT_ASSERT(( MutableEdgeListGraphConcept )); } return 0; }