]>
Commit | Line | Data |
---|---|---|
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 | ||
18 | int 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 | } |