Boost.Range merge of bug fixes and documentation

[SVN r64120]
This commit is contained in:
Neil Groves
2010-07-18 11:36:34 +00:00
parent ca2328ed87
commit 26c095d022
275 changed files with 7445 additions and 5987 deletions

View File

@ -26,6 +26,12 @@ namespace boost
{
namespace
{
template< class Range >
unsigned int udistance(Range& rng)
{
return static_cast<unsigned int>(boost::distance(rng));
}
template< class SinglePassRange >
void test_for_each_impl( SinglePassRange rng )
{
@ -35,12 +41,15 @@ namespace boost
// Test the mutable version
fn_t result_fn = boost::for_each(rng, fn_t(rng));
BOOST_CHECK_EQUAL( boost::distance(rng), result_fn.invocation_count() );
BOOST_CHECK_EQUAL( boost::udistance(rng), result_fn.invocation_count() );
fn_t result_fn2 = boost::for_each(boost::make_iterator_range(rng), fn_t(rng));
BOOST_CHECK_EQUAL( boost::udistance(rng), result_fn.invocation_count() );
// Test the constant version
const SinglePassRange& cref_rng = rng;
result_fn = boost::for_each(cref_rng, fn_t(cref_rng));
BOOST_CHECK_EQUAL( boost::distance(cref_rng), result_fn.invocation_count() );
BOOST_CHECK_EQUAL( boost::udistance(cref_rng), result_fn.invocation_count() );
}
template< class Container >
@ -51,7 +60,7 @@ namespace boost
// Test empty
Container cont;
test_for_each_impl(cont);
// Test one element
cont += 0;
test_for_each_impl(cont);
@ -63,7 +72,7 @@ namespace boost
void test_for_each()
{
boost::array<int, 10> a = { 0,1,2,3,4,5,6,7,8,9 };
boost::array<int, 10> a = {{ 0,1,2,3,4,5,6,7,8,9 }};
test_for_each_impl(a);
test_for_each_t< std::vector<int> >();
@ -79,8 +88,8 @@ init_unit_test_suite(int argc, char* argv[])
{
boost::unit_test::test_suite* test
= BOOST_TEST_SUITE( "RangeTestSuite.algorithm.for_each" );
test->add( BOOST_TEST_CASE( &boost::test_for_each ) );
return test;
}