Merge branch 'develop'

This commit is contained in:
Neil Groves
2015-04-21 08:22:15 +01:00
18 changed files with 180 additions and 230 deletions
+1 -4
View File
@@ -40,10 +40,6 @@ test-suite range :
[ compile-fail compile_fail/adaptor/copied_concept2.cpp ]
[ compile-fail compile_fail/adaptor/copied_concept3.cpp ]
[ compile-fail compile_fail/adaptor/copied_concept4.cpp ]
[ compile-fail compile_fail/adaptor/filtered_concept.cpp ]
[ compile-fail compile_fail/adaptor/filtered_concept2.cpp ]
[ compile-fail compile_fail/adaptor/filtered_concept3.cpp ]
[ compile-fail compile_fail/adaptor/filtered_concept4.cpp ]
[ compile-fail compile_fail/adaptor/reversed_concept.cpp ]
[ compile-fail compile_fail/adaptor/reversed_concept2.cpp ]
[ compile-fail compile_fail/adaptor/reversed_concept3.cpp ]
@@ -219,6 +215,7 @@ test-suite range :
[ range-test ticket_5811_indirected_optional ]
[ range-test ticket_6715_iterator_range_equality ]
[ range-test ticket_6944 ]
[ range-test ticket_10336 ]
[ range-test value_type ]
;
+24
View File
@@ -21,6 +21,7 @@
#include <set>
#include <string>
#include <vector>
#include <sstream>
namespace boost
{
@@ -113,12 +114,35 @@ namespace boost
filtered_test_impl< Container, is_even >();
}
void ticket_10988_single_pass()
{
std::vector<int> v;
std::string str("0 1 2 3 4 5");
std::istringstream in(str);
boost::push_back(v,
boost::make_iterator_range(
std::istream_iterator<int>(in),
std::istream_iterator<int>())
| boost::adaptors::filtered(is_even()));
std::vector<int> reference;
for (int i = 0; i < 6; i += 2)
{
reference.push_back(i);
}
BOOST_CHECK_EQUAL_COLLECTIONS(
reference.begin(), reference.end(),
v.begin(), v.end());
}
void filtered_test()
{
filtered_test_all_predicates< std::vector< int > >();
filtered_test_all_predicates< std::list< int > >();
filtered_test_all_predicates< std::set< int > >();
filtered_test_all_predicates< std::multiset< int > >();
ticket_10988_single_pass();
}
}
}
@@ -1,38 +0,0 @@
// Boost.Range library
//
// Copyright Neil Groves 2014. Use, modification and distribution is subject
// to 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)
//
// For more information, see http://www.boost.org/libs/range
//
#include "mock_range.hpp"
#include <boost/range/adaptor/filtered.hpp>
namespace
{
struct always_true
{
typedef bool result_type;
bool operator()(int) const
{
return true;
}
};
} // anonymous namespace
int main(int, const char**)
{
using boost::range::unit_test::mock_range;
using boost::adaptors::filtered;
// This next line should fail when Boost.Range concept checking is
// enabled since the filtered adaptor takes at least a ForwardRange.
return (mock_range<boost::single_pass_traversal_tag>() |
filtered(always_true())).front();
}
@@ -1,38 +0,0 @@
// Boost.Range library
//
// Copyright Neil Groves 2014. Use, modification and distribution is subject
// to 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)
//
// For more information, see http://www.boost.org/libs/range
//
#include "mock_range.hpp"
#include <boost/range/adaptor/filtered.hpp>
namespace
{
struct always_true
{
typedef bool result_type;
bool operator()(int) const
{
return true;
}
};
} // anonymous namespace
int main(int, const char**)
{
using boost::range::unit_test::mock_const_range;
using boost::adaptors::filtered;
// This next line should fail when Boost.Range concept checking is
// enabled since the filtered adaptor takes at least a ForwardRange.
return (mock_const_range<boost::single_pass_traversal_tag>() |
filtered(always_true())).front();
}
@@ -1,38 +0,0 @@
// Boost.Range library
//
// Copyright Neil Groves 2014. Use, modification and distribution is subject
// to 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)
//
// For more information, see http://www.boost.org/libs/range
//
#include "mock_range.hpp"
#include <boost/range/adaptor/filtered.hpp>
namespace
{
struct always_true
{
typedef bool result_type;
bool operator()(int) const
{
return true;
}
};
} // anonymous namespace
int main(int, const char**)
{
using boost::range::unit_test::mock_range;
// This next line should fail when Boost.Range concept checking is
// enabled since the filtered adaptor takes at least a ForwardRange.
return boost::adaptors::filter(
mock_range<boost::single_pass_traversal_tag>(),
always_true()).front();
}
@@ -1,38 +0,0 @@
// Boost.Range library
//
// Copyright Neil Groves 2014. Use, modification and distribution is subject
// to 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)
//
// For more information, see http://www.boost.org/libs/range
//
#include "mock_range.hpp"
#include <boost/range/adaptor/filtered.hpp>
namespace
{
struct always_true
{
typedef bool result_type;
bool operator()(int) const
{
return true;
}
};
} // anonymous namespace
int main(int, const char**)
{
using boost::range::unit_test::mock_const_range;
// This next line should fail when Boost.Range concept checking is
// enabled since the filtered adaptor takes at least a ForwardRange.
return boost::adaptors::filter(
mock_const_range<boost::single_pass_traversal_tag>(),
always_true()).front();
}
+18
View File
@@ -244,6 +244,22 @@ inline void test_advance()
BOOST_CHECK_EQUAL(r3.advance_end(-1).size(), 1u);
}
void ticket_10514()
{
typedef std::vector<int> vec_t;
typedef boost::sub_range<vec_t> range_t;
vec_t v(10);
range_t r(v.begin(), v.end());
const range_t& cr = r;
range_t copy_r = cr;
BOOST_CHECK(r.begin() == copy_r.begin());
BOOST_CHECK(r.end() == copy_r.end());
BOOST_CHECK(cr.begin() == copy_r.begin());
BOOST_CHECK(cr.end() == copy_r.end());
}
} // anonymous namespace
} // namespace boost_range_test
@@ -262,6 +278,8 @@ boost::unit_test::test_suite* init_unit_test_suite(int, char*[])
test->add(BOOST_TEST_CASE(&boost_range_test::test_advance));
test->add(BOOST_TEST_CASE(&boost_range_test::ticket_10514));
return test;
}
+43
View File
@@ -0,0 +1,43 @@
// Boost.Range library
//
// Copyright Neil Groves 2011. Use, modification and
// distribution is subject to 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)
//
//
// For more information, see http://www.boost.org/libs/range/
//
#include <boost/range/iterator_range.hpp>
#include <boost/unordered_map.hpp>
#include <boost/test/test_tools.hpp>
#include <boost/test/unit_test.hpp>
namespace boost
{
namespace
{
// Ticket 10336 - compilation error in iterator_range and unordered_map
void test_ticket_10336()
{
typedef boost::unordered_map<int,int> container_t;
typedef container_t::const_iterator citer_t;
typedef boost::iterator_range<citer_t> rng_t;
const container_t c;
rng_t rng(c.begin(), c.end());
}
}
}
boost::unit_test::test_suite*
init_unit_test_suite(int argc, char* argv[])
{
boost::unit_test::test_suite* test
= BOOST_TEST_SUITE( "RangeTestSuite.ticket_10336" );
test->add( BOOST_TEST_CASE( &boost::test_ticket_10336 ) );
return test;
}