]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/test/qi/match_manip3.cpp
1 /*=============================================================================
2 Copyright (c) 2001-2010 Hartmut Kaiser
3 Copyright (c) 2001-2010 Joel de Guzman
5 Distributed under the Boost Software License, Version 1.0. (See accompanying
6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 =============================================================================*/
9 #include "match_manip.hpp"
14 using boost::spirit::qi::_1
;
15 using boost::spirit::qi::_2
;
16 using boost::spirit::qi::match
;
17 using boost::spirit::qi::phrase_match
;
18 using boost::spirit::qi::typed_stream
;
19 using boost::spirit::qi::stream
;
20 using boost::spirit::qi::int_
;
22 using namespace boost::spirit::ascii
;
23 namespace fusion
= boost::fusion
;
24 namespace phx
= boost::phoenix
;
29 BOOST_TEST(test( "a2",
30 (char_
>> int_
)[(phx::ref(a
) = _1
, phx::ref(i
) = _2
)]
31 ) && a
== 'a' && i
== 2);
33 fusion::vector
<char, int> t
;
34 BOOST_TEST(test( "a2",
35 match(char_
>> int_
, t
)
36 ) && fusion::at_c
<0>(t
) == 'a' && fusion::at_c
<1>(t
) == 2);
38 t
= fusion::vector
<char, int>();
39 BOOST_TEST(test( " a 2",
40 phrase_match(char_
>> int_
, space
, t
)
41 ) && fusion::at_c
<0>(t
) == 'a' && fusion::at_c
<1>(t
) == 2);
43 BOOST_TEST(!test( "a2",
44 match(char_
>> alpha
, t
)
46 BOOST_TEST(!test( " a 2",
47 phrase_match(char_
>> alpha
, space
, t
)
52 // parse elements of a vector
54 BOOST_TEST(test( "abc",
55 (*char_
)[phx::ref(v
) = _1
]
56 ) && 3 == v
.size() && v
[0] == 'a' && v
[1] == 'b' && v
[2] == 'c');
59 BOOST_TEST(test( "abc",
61 ) && 3 == v
.size() && v
[0] == 'a' && v
[1] == 'b' && v
[2] == 'c');
64 BOOST_TEST(test( " a b c",
65 phrase_match(*char_
, space
, v
)
66 ) && 3 == v
.size() && v
[0] == 'a' && v
[1] == 'b' && v
[2] == 'c');
69 BOOST_TEST(test( "abc",
71 ) && 3 == v
.size() && v
[0] == 'a' && v
[1] == 'b' && v
[2] == 'c');
74 BOOST_TEST(test( " a b c",
75 phrase_match(v
, space
)
76 ) && 3 == v
.size() && v
[0] == 'a' && v
[1] == 'b' && v
[2] == 'c');
78 // parse a comma separated list of vector elements
80 BOOST_TEST(test( "a,b,c",
82 ) && 3 == v
.size() && v
[0] == 'a' && v
[1] == 'b' && v
[2] == 'c');
85 BOOST_TEST(test( " a , b , c",
86 phrase_match(char_
% ',', space
, v
)
87 ) && 3 == v
.size() && v
[0] == 'a' && v
[1] == 'b' && v
[2] == 'c');
89 // output all elements of a list
91 BOOST_TEST(test( "abc",
93 ) && 3 == l
.size() && is_list_ok(l
));
96 BOOST_TEST(test( " a b c",
97 phrase_match(*char_
, space
, l
)
98 ) && 3 == l
.size() && is_list_ok(l
));
101 BOOST_TEST(test( "abc",
103 ) && 3 == l
.size() && is_list_ok(l
));
106 BOOST_TEST(test( " a b c",
107 phrase_match(l
, space
)
108 ) && 3 == l
.size() && is_list_ok(l
));
111 return boost::report_errors();