]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/range/test/adaptor_test/type_erased_brackets.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / range / test / adaptor_test / type_erased_brackets.cpp
1 // Boost.Range library
2 //
3 // Copyright Neil Groves 2014. 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)
7 //
8 #include <boost/range/adaptor/type_erased.hpp>
9 #include "type_erased_test.hpp"
10
11 #include <boost/test/unit_test.hpp>
12
13 #include <vector>
14
15 namespace boost_range_adaptor_type_erased_test
16 {
17 namespace
18 {
19
20 void test_operator_brackets()
21 {
22 typedef boost::adaptors::type_erased<> type_erased_t;
23
24 std::vector<int> c;
25 for (int i = 0; i < 10; ++i)
26 c.push_back(i);
27
28 typedef boost::any_range_type_generator<
29 std::vector<int> >::type any_range_type;
30
31 BOOST_STATIC_ASSERT((
32 boost::is_same<
33 int,
34 boost::range_value<any_range_type>::type
35 >::value
36 ));
37
38 BOOST_STATIC_ASSERT((
39 boost::is_same<
40 boost::random_access_traversal_tag,
41 boost::iterator_traversal<
42 boost::range_iterator<any_range_type>::type
43 >::type
44 >::value
45 ));
46
47 any_range_type rng = c | type_erased_t();
48
49 for (int i = 0; i < 10; ++i)
50 {
51 BOOST_CHECK_EQUAL(rng[i], i);
52 }
53 }
54
55 } // anonymous namespace
56 } // namespace boost_range_adaptor_type_erased_test
57
58 boost::unit_test::test_suite*
59 init_unit_test_suite(int, char*[])
60 {
61 boost::unit_test::test_suite* test
62 = BOOST_TEST_SUITE("RangeTestSuite.adaptor.type_erased_brackets");
63
64 test->add(
65 BOOST_TEST_CASE(
66 &boost_range_adaptor_type_erased_test::test_operator_brackets));
67
68 return test;
69 }
70