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
15namespace boost_range_adaptor_type_erased_test
16{
17 namespace
18 {
19
20void 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(x: 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
58boost::unit_test::test_suite*
59init_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
71

source code of boost/libs/range/test/adaptor_test/type_erased_brackets.cpp