]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/test/qi/regression_binary_action.cpp
1 /*=============================================================================
2 Copyright (c) 2001-2011 Hartmut Kaiser
3 Copyright (c) 2011 Matthias Born
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 ==============================================================================*/
8 #include <boost/config/warning_disable.hpp>
9 #include <boost/detail/lightweight_test.hpp>
10 #include <boost/spirit/include/qi.hpp>
11 #include <boost/spirit/include/phoenix.hpp>
12 #include <boost/fusion/include/adapt_struct.hpp>
17 // This test assumes a little endian architecture
18 #ifdef BOOST_LITTLE_ENDIAN
19 using spirit_test::test_attr
;
20 using boost::spirit::qi::rule
;
21 using boost::spirit::qi::locals
;
22 using boost::spirit::qi::little_word
;
23 using boost::spirit::qi::omit
;
24 using boost::spirit::qi::_1
;
25 using boost::spirit::qi::_a
;
26 using boost::spirit::qi::attr
;
28 rule
<char const*, short int(), locals
<short int> > pass
;
31 rule
<char const*, short int(), locals
<short int> > pass_ugly
;
32 pass_ugly
%= omit
[little_word
[_a
=_1
]] >> attr(_a
);
34 rule
<char const*, short int(), locals
<short int> > fail
;
35 fail
%= little_word
[_a
=_1
];
38 BOOST_TEST(test_attr("\x01\x02", pass
, us
) && us
== 0x0201);
41 BOOST_TEST(test_attr("\x01\x02", pass_ugly
, us
) && us
== 0x0201);
44 BOOST_TEST(test_attr("\x01\x02", fail
, us
) && us
== 0x0201);
46 return boost::report_errors();