$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r53134 - trunk/libs/graph/test
From: asutton_at_[hidden]
Date: 2009-05-20 12:06:16
Author: asutton
Date: 2009-05-20 12:06:13 EDT (Wed, 20 May 2009)
New Revision: 53134
URL: http://svn.boost.org/trac/boost/changeset/53134
Log:
Added a test to verify a bug from Dmitry Bufistov. Built in some output to
help debug the graph testing framework.
Added:
   trunk/libs/graph/test/read_propmap.cpp   (contents, props changed)
Text files modified: 
   trunk/libs/graph/test/Jamfile.v2            |     1 +                                       
   trunk/libs/graph/test/test_construction.hpp |     4 ++++                                    
   trunk/libs/graph/test/test_destruction.hpp  |     4 ++++                                    
   trunk/libs/graph/test/test_direction.hpp    |     3 +++                                     
   trunk/libs/graph/test/test_graph.hpp        |     2 ++                                      
   trunk/libs/graph/test/test_graphs.cpp       |     9 +++++++++                               
   trunk/libs/graph/test/test_iteration.hpp    |     2 ++                                      
   trunk/libs/graph/test/test_properties.hpp   |     2 ++                                      
   8 files changed, 27 insertions(+), 0 deletions(-)
Modified: trunk/libs/graph/test/Jamfile.v2
==============================================================================
--- trunk/libs/graph/test/Jamfile.v2	(original)
+++ trunk/libs/graph/test/Jamfile.v2	2009-05-20 12:06:13 EDT (Wed, 20 May 2009)
@@ -112,6 +112,7 @@
     [ run eccentricity.cpp ]
     [ run clustering_coefficient.cpp ]
     [ run core_numbers_test.cpp ]
+    [ run read_propmap.cpp ]
 
     $(optional_tests)
     ;
Added: trunk/libs/graph/test/read_propmap.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/graph/test/read_propmap.cpp	2009-05-20 12:06:13 EDT (Wed, 20 May 2009)
@@ -0,0 +1,30 @@
+// (C) Copyright 2009 Dmitry Bufistov, Andrew Sutton
+//
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0 (See accompanying file
+// LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+#include <boost/graph/graph_concepts.hpp>
+#include <boost/graph/adjacency_list.hpp>
+
+// Test contributed by Dmitry that validates a read-only property map bug
+// for bundled properties.
+// TODO: Integrate this into a testing framework.
+
+using namespace boost;
+
+struct EdgeProp
+{
+  double weight;
+};
+
+typedef adjacency_list<vecS, vecS, directedS, no_property, EdgeProp > graph_t;
+int main()
+{
+    typedef property_map<graph_t, double EdgeProp::*>::type WeightMap;
+    typedef property_map<graph_t, double EdgeProp::*>::const_type cWeightMap;
+    typedef graph_traits<graph_t>::edge_descriptor Edge;
+    function_requires<ReadablePropertyMapConcept<WeightMap, Edge> >();
+    function_requires<ReadablePropertyMapConcept<cWeightMap, Edge> >();
+    return 0;
+}
Modified: trunk/libs/graph/test/test_construction.hpp
==============================================================================
--- trunk/libs/graph/test/test_construction.hpp	(original)
+++ trunk/libs/graph/test/test_construction.hpp	2009-05-20 12:06:13 EDT (Wed, 20 May 2009)
@@ -24,6 +24,7 @@
 // This matches MutableGraph, so just add some vertices.
 template <typename Graph>
 void build_graph(Graph& g, boost::mpl::true_, boost::mpl::false_) {
+    std::cout << "...build_normal\n";
     for(std::size_t i = 0; i < N; ++i) {
         boost::add_vertex(g);
     }
@@ -32,6 +33,7 @@
 // This will match labeled graphs.
 template <typename Graph>
 void build_graph(Graph& g, boost::mpl::false_, boost::mpl::true_) {
+    std::cout << "...build_labeled\n";
     // Add each vertex labeled with the number i.
     for(std::size_t i = 0; i < N; ++i) {
         boost::add_vertex(i, g);
@@ -50,6 +52,7 @@
 //@{
 template <typename Graph, typename VertexSet>
 void connect_graph(Graph& g, VertexSet const& verts, boost::mpl::false_) {
+    std::cout << "...connect_normal\n";
     Pair *f, *l;
     for(boost::tie(f, l) = edge_pairs(); f != l; ++f) {
         Pair const& e = *f;
@@ -63,6 +66,7 @@
 
 template <typename Graph, typename VertexSet>
 void connect_graph(Graph& g, VertexSet const& verts, boost::mpl::true_) {
+    std::cout << "...connect_labeled\n";
     // With labeled graphs, we want to operate directly on the edge numbers
     // rather than looking up the correct vertex index. This is because the
     // vertices are already mapped to indices.
Modified: trunk/libs/graph/test/test_destruction.hpp
==============================================================================
--- trunk/libs/graph/test/test_destruction.hpp	(original)
+++ trunk/libs/graph/test/test_destruction.hpp	2009-05-20 12:06:13 EDT (Wed, 20 May 2009)
@@ -21,6 +21,7 @@
 // This matches MutableGraph, so just remove a vertex and then clear.
 template <typename Graph, typename VertexSet>
 void destroy_graph(Graph& g, VertexSet const& verts, boost::mpl::true_, boost::mpl::false_) {
+    std::cout << "...destroy_normal\n";
     // Remove the roof vertex
     boost::remove_vertex(verts[0], g);
     BOOST_ASSERT(boost::num_vertices(g) == N - 1);
@@ -29,6 +30,7 @@
 // This will match labeled graphs.
 template <typename Graph, typename VertexSet>
 void destroy_graph(Graph& g, VertexSet const& verts, boost::mpl::false_, boost::mpl::true_) {
+    std::cout << "...destroy_labeled\n";
     // Remove the roof vertex
     boost::remove_vertex(0, g);
     BOOST_ASSERT(boost::num_vertices(g) == N - 1);
@@ -48,6 +50,7 @@
 
 template <typename Graph, typename VertexSet>
 void disconnect_graph(Graph& g, VertexSet const& verts, boost::mpl::false_) {
+    std::cout << "...disconnect_normal\n";
     typedef typename boost::graph_traits<Graph>::edge_descriptor Edge;
 
     // Disconnect the "lollipop" from the house.
@@ -70,6 +73,7 @@
 
 template <typename Graph, typename VertexSet>
 void disconnect_graph(Graph& g, VertexSet const& verts, boost::mpl::true_) {
+    std::cout << "...disconnect_labeled\n";
     typedef typename boost::graph_traits<Graph>::edge_descriptor Edge;
 
     // Disconnect the "lollipop" from the house.
Modified: trunk/libs/graph/test/test_direction.hpp
==============================================================================
--- trunk/libs/graph/test/test_direction.hpp	(original)
+++ trunk/libs/graph/test/test_direction.hpp	2009-05-20 12:06:13 EDT (Wed, 20 May 2009)
@@ -16,6 +16,7 @@
 //@{
 template <typename Graph, typename VertexSet>
 void test_outdirected_graph(Graph const& g, VertexSet const& verts, boost::mpl::true_) {
+    std::cout << "...test_outdirected_graph\n";
     typedef typename boost::graph_traits<Graph>::out_edge_iterator OutIter;
     typedef std::pair<OutIter, OutIter> OutRange;
     typedef std::vector<OutRange> OutSet;
@@ -55,6 +56,7 @@
 //@{
 template <typename Graph, typename VertexSet>
 void test_indirected_graph(Graph const& g, VertexSet const& verts, boost::mpl::true_) {
+    std::cout << "...test_indirected_graph\n";
     typedef typename boost::graph_traits<Graph>::in_edge_iterator InIter;
     typedef std::pair<InIter, InIter> InRange;
     typedef std::vector<InRange> InSet;
@@ -89,6 +91,7 @@
  */
 template <typename Graph, typename VertexSet>
 void test_undirected_graph(Graph const& g, VertexSet const& verts, boost::mpl::true_) {
+    std::cout << "...test_undirected_graph\n";
     typedef typename boost::graph_traits<Graph>::out_edge_iterator OutIter;
     typedef std::pair<OutIter, OutIter> OutRange;
     typedef std::vector<OutRange> OutSet;
Modified: trunk/libs/graph/test/test_graph.hpp
==============================================================================
--- trunk/libs/graph/test/test_graph.hpp	(original)
+++ trunk/libs/graph/test/test_graph.hpp	2009-05-20 12:06:13 EDT (Wed, 20 May 2009)
@@ -87,6 +87,8 @@
 
 template <typename Graph>
 void test_graph(Graph& g) {
+    std::cout << typestr(g) << "\n";
+
     // Define a bunch of tags for the graph.
     typename boost::graph_has_add_vertex<Graph>::type can_add_vertex;
     typename boost::graph_has_remove_vertex<Graph>::type can_remove_vertex;
Modified: trunk/libs/graph/test/test_graphs.cpp
==============================================================================
--- trunk/libs/graph/test/test_graphs.cpp	(original)
+++ trunk/libs/graph/test/test_graphs.cpp	2009-05-20 12:06:13 EDT (Wed, 20 May 2009)
@@ -13,6 +13,7 @@
 #include <boost/graph/undirected_graph.hpp>
 #include <boost/graph/directed_graph.hpp>
 #include <boost/graph/labeled_graph.hpp>
+#include <boost/graph/subgraph.hpp>
 
 #include "test_graph.hpp"
 
@@ -148,5 +149,13 @@
         Graph g;
         test_graph(g);
     }
+    {
+        // Make srue that subgraph obeys the basi
+        typedef property<edge_index_t, size_t, EdgeBundle> EdgeProp;
+        typedef adjacency_list<vecS, vecS, directedS, VertexBundle, EdgeProp> BaseGraph;
+        typedef subgraph<BaseGraph> Graph;
+        Graph g;
+        test_graph(g);
+    }
 }
 
Modified: trunk/libs/graph/test/test_iteration.hpp
==============================================================================
--- trunk/libs/graph/test/test_iteration.hpp	(original)
+++ trunk/libs/graph/test/test_iteration.hpp	2009-05-20 12:06:13 EDT (Wed, 20 May 2009)
@@ -16,6 +16,7 @@
 //@{
 template <typename Graph>
 void test_vertex_list_graph(Graph const& g) {
+    std::cout << "...test_vertex_list_graph\n";
     typedef typename boost::graph_traits<Graph>::vertex_iterator Iterator;
     typedef std::pair<Iterator, Iterator> Range;
 
@@ -33,6 +34,7 @@
 //@{
 template <typename Graph>
 void test_edge_list_graph(Graph const& g) {
+    std::cout << "...test_edge_list_graph\n";
     typedef typename boost::graph_traits<Graph>::edge_iterator Iterator;
     typedef std::pair<Iterator, Iterator> Range;
 
Modified: trunk/libs/graph/test/test_properties.hpp
==============================================================================
--- trunk/libs/graph/test/test_properties.hpp	(original)
+++ trunk/libs/graph/test/test_properties.hpp	2009-05-20 12:06:13 EDT (Wed, 20 May 2009)
@@ -14,6 +14,7 @@
 //@{
 template <typename Graph, typename VertexSet>
 void test_vertex_bundle(Graph& g, VertexSet const& verts, boost::mpl::true_) {
+    std::cout << "...test_vertex_bundle\n";
     typedef typename boost::graph_traits<Graph>::vertex_descriptor Vertex;
 
     // This just has to compile. You can't actually get this map.
@@ -44,6 +45,7 @@
 //@{
 template <typename Graph, typename VertexSet>
 void test_edge_bundle(Graph& g, VertexSet const& verts, boost::mpl::true_) {
+    std::cout << "...test_edge_bundle\n";
     // This just has to compile. You can't actually get this map.
     typedef typename boost::graph_traits<Graph>::edge_descriptor Edge;
     typedef typename boost::property_map<Graph, boost::edge_bundle_t>::type TestMap;