]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/iterator/test/detail/zip_iterator_test.ipp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / iterator / test / detail / zip_iterator_test.ipp
CommitLineData
7c673cae
FG
1// Copyright (c) 2014 Kohei Takahashi.
2//
3// Distributed under the Boost Software License, Version 1.0. (See
4// accompanying file LICENSE_1_0.txt or copy at
5// http://www.boost.org/LICENSE_1_0.txt)
6//
7// See http://www.boost.org for most recent version including documentation.
8
9#include <boost/detail/lightweight_test.hpp>
10
11#include <boost/assign/list_of.hpp>
12#include <boost/fusion/include/at.hpp>
13#include <boost/iterator/zip_iterator.hpp>
14#include <vector>
15#include <string>
16
17
18int main()
19{
20 typedef TUPLE<
21 std::vector<int>::iterator,
22 std::vector<std::string>::iterator
23 > iterator_tuple;
24
25 std::vector<int> vi = boost::assign::list_of(42)(72);
26 std::vector<std::string> vs = boost::assign::list_of("kokoro")("pyonpyon");
27
28 {
29 boost::zip_iterator<iterator_tuple> i1(MAKE_TUPLE(vi.begin(), vs.begin()));
30 boost::zip_iterator<iterator_tuple> i2 = i1;
31
32 BOOST_TEST( i1 == i2);
33 BOOST_TEST( i1++ == i2);
34 BOOST_TEST( i1 == (i2 + 1));
35 BOOST_TEST((i1 - 1) == i2);
36 BOOST_TEST( i1-- == ++i2);
37 BOOST_TEST( i1 == --i2);
38 }
39
40 {
41 boost::zip_iterator<iterator_tuple> i1(MAKE_TUPLE(vi.begin(), vs.begin()));
42 boost::zip_iterator<iterator_tuple> i2 = i1 + 1;
43
44 BOOST_TEST( i1 != i2);
45 BOOST_TEST( i1++ != i2);
46 BOOST_TEST( i1 != (i2 + 1));
47 BOOST_TEST((i1 - 1) != i2);
48 BOOST_TEST( i1-- != ++i2);
49 BOOST_TEST( i1 != --i2);
50 }
51
52 {
53 boost::zip_iterator<iterator_tuple> i(MAKE_TUPLE(vi.begin(), vs.begin()));
54
55 BOOST_TEST(boost::fusion::at_c<0>(* i ) == 42);
56 BOOST_TEST(boost::fusion::at_c<1>(* i ) == "kokoro");
57 BOOST_TEST(boost::fusion::at_c<0>(*(i + 1)) == 72);
58 BOOST_TEST(boost::fusion::at_c<1>(*(i + 1)) == "pyonpyon");
59 }
60
b32b8144
FG
61 {
62 // Trac #12895
63 boost::zip_iterator<
64 TUPLE<int*, std::string*>
65 > i(MAKE_TUPLE(&vi[0], &vs[0]));
66
67 BOOST_TEST(boost::fusion::at_c<0>(* i ) == 42);
68 BOOST_TEST(boost::fusion::at_c<1>(* i ) == "kokoro");
69 BOOST_TEST(boost::fusion::at_c<0>(*(i + 1)) == 72);
70 BOOST_TEST(boost::fusion::at_c<1>(*(i + 1)) == "pyonpyon");
71 }
72
7c673cae
FG
73 {
74 boost::zip_iterator<iterator_tuple> i1(MAKE_TUPLE(vi.begin(), vs.begin()));
75 boost::zip_iterator<iterator_tuple> i2(MAKE_TUPLE(vi.end(), vs.end()));
76
77 BOOST_TEST((i2 - i1) == 2);
78 ++i1;
79 BOOST_TEST((i2 - i1) == 1);
80 --i2;
81 BOOST_TEST((i2 - i1) == 0);
82 }
83
84 return boost::report_errors();
85}