1// (C) Copyright 2009 Andrew Sutton
2//
3// Use, modification and distribution are subject to the
4// Boost Software License, Version 1.0 (See accompanying file
5// LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
6
7#ifndef TEST_ITERATION_HPP
8#define TEST_ITERATION_HPP
9
10#include <boost/concept/assert.hpp>
11#include <algorithm>
12
13/** @name Test Vertex List
14 * Test the vertex list interface. Note that there are currently no graphs that
15 * do not expose this interface.
16 */
17//@{
18template < typename Graph > void test_vertex_list_graph(Graph const& g)
19{
20 using namespace boost;
21 BOOST_CONCEPT_ASSERT((VertexListGraphConcept< Graph >));
22
23 std::cout << "...test_vertex_list_graph\n";
24 typedef typename graph_traits< Graph >::vertex_iterator Iterator;
25 typedef std::pair< Iterator, Iterator > Range;
26
27 Range rng = vertices(g);
28 BOOST_ASSERT(num_vertices(g) == N);
29 BOOST_ASSERT(rng.first != rng.second);
30 BOOST_ASSERT(std::distance(rng.first, rng.second) == int(N));
31}
32//@}
33
34/** @name Test Edge List
35 * Test the edge list interface. Note that there are currently no graphs that
36 * do not expose this interface.
37 */
38//@{
39template < typename Graph > void test_edge_list_graph(Graph const& g)
40{
41 using namespace boost;
42 BOOST_CONCEPT_ASSERT((EdgeListGraphConcept< Graph >));
43
44 std::cout << "...test_edge_list_graph\n";
45 typedef typename graph_traits< Graph >::edge_iterator Iterator;
46 typedef std::pair< Iterator, Iterator > Range;
47
48 Range rng = edges(g);
49 BOOST_ASSERT(num_edges(g) == M);
50 BOOST_ASSERT(rng.first != rng.second);
51 BOOST_ASSERT(std::distance(rng.first, rng.second) == int(M));
52}
53//@}
54
55#endif
56

source code of boost/libs/graph/test/test_iteration.hpp