]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/range/test/adaptor_test/sliced.cpp
3 // Copyright Neil Groves 2009. Use, modification and
4 // distribution is subject to the Boost Software License, Version
5 // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
9 // For more information, see http://www.boost.org/libs/range/
11 #include <boost/range/adaptor/sliced.hpp>
13 #include <boost/test/test_tools.hpp>
14 #include <boost/test/unit_test.hpp>
16 #include <boost/assign.hpp>
17 #include <boost/range/algorithm_ext.hpp>
27 template< class Container
>
28 void sliced_test_impl( Container
& c
)
30 using namespace boost::adaptors
;
32 typedef BOOST_DEDUCED_TYPENAME
Container::value_type value_t
;
34 std::vector
< value_t
> test_result1
;
35 boost::push_back(test_result1
, c
| sliced(0u,c
.size()));
37 BOOST_CHECK_EQUAL_COLLECTIONS( test_result1
.begin(), test_result1
.end(),
40 std::vector
< value_t
> test_alt_result1
;
41 boost::push_back(test_alt_result1
, adaptors::slice(c
, 0u, c
.size()));
42 BOOST_CHECK_EQUAL_COLLECTIONS( test_alt_result1
.begin(), test_alt_result1
.end(),
45 BOOST_CHECK( boost::empty(c
| sliced(0u, 0u)) );
47 const std::size_t half_count
= c
.size() / 2u;
50 std::vector
< value_t
> test_result2
;
51 boost::push_back(test_result2
, c
| sliced(0u, half_count
));
53 BOOST_CHECK_EQUAL_COLLECTIONS( test_result2
.begin(), test_result2
.end(),
54 c
.begin(), c
.begin() + half_count
);
56 std::vector
< value_t
> test_alt_result2
;
57 boost::push_back(test_alt_result2
, adaptors::slice(c
, 0u, half_count
));
58 BOOST_CHECK_EQUAL_COLLECTIONS( test_alt_result2
.begin(), test_alt_result2
.end(),
59 c
.begin(), c
.begin() + half_count
);
63 template< class Container
>
64 void sliced_test_impl()
66 using namespace boost::assign
;
78 c
+= 1,1,1,2,2,3,4,5,6,6,6,7,8,9;
84 sliced_test_impl
< std::vector
< int > >();
85 sliced_test_impl
< std::deque
< int > >();
90 boost::unit_test::test_suite
*
91 init_unit_test_suite(int argc
, char* argv
[])
93 boost::unit_test::test_suite
* test
94 = BOOST_TEST_SUITE( "RangeTestSuite.adaptor.sliced" );
96 test
->add( BOOST_TEST_CASE( &boost::sliced_test
) );