/*============================================================================= Copyright (c) 2001-2011 Hartmut Kaiser Copyright (c) 2011 Matthias Born Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "test.hpp" int main() { // This test assumes a little endian architecture #if BOOST_ENDIAN_LITTLE_BYTE using spirit_test::test_attr; using boost::spirit::qi::rule; using boost::spirit::qi::locals; using boost::spirit::qi::little_word; using boost::spirit::qi::omit; using boost::spirit::qi::_1; using boost::spirit::qi::_a; using boost::spirit::qi::attr; rule > pass; pass = little_word; rule > pass_ugly; pass_ugly %= omit[little_word[_a=_1]] >> attr(_a); rule > fail; fail %= little_word[_a=_1]; short int us = 0; BOOST_TEST(test_attr("\x01\x02", pass, us) && us == 0x0201); us = 0; BOOST_TEST(test_attr("\x01\x02", pass_ugly, us) && us == 0x0201); us = 0; BOOST_TEST(test_attr("\x01\x02", fail, us) && us == 0x0201); #endif return boost::report_errors(); }