/*============================================================================= Copyright (c) 2001-2010 Hartmut Kaiser Copyright (c) 2001-2010 Joel de Guzman 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 "match_manip.hpp" int main() { using boost::spirit::qi::_1; using boost::spirit::qi::_2; using boost::spirit::qi::match; using boost::spirit::qi::phrase_match; using boost::spirit::qi::typed_stream; using boost::spirit::qi::stream; using boost::spirit::qi::int_; using namespace boost::spirit::ascii; namespace fusion = boost::fusion; namespace phx = boost::phoenix; { char c = '\0'; BOOST_TEST(test( "a", char_[phx::ref(c) = _1] ) && c == 'a'); c = '\0'; BOOST_TEST(test( "a", match(char_[phx::ref(c) = _1]) ) && c == 'a'); c = '\0'; BOOST_TEST(test( " a", phrase_match(char_[phx::ref(c) = _1], space) ) && c == 'a'); c = '\0'; BOOST_TEST(test( "a", match(char_, c) ) && c == 'a'); c = '\0'; BOOST_TEST(test( " a", phrase_match(char_, space, c) ) && c == 'a'); } { /////////////////////////////////////////////////////////////////////// typedef typed_stream char_stream_type; char_stream_type const char_stream = char_stream_type(); typedef typed_stream int_stream_type; int_stream_type const int_stream = int_stream_type(); /////////////////////////////////////////////////////////////////////// char c = '\0'; BOOST_TEST(test( "a", char_stream[phx::ref(c) = _1] ) && c == 'a'); c = '\0'; BOOST_TEST(test( "a", match(char_stream[phx::ref(c) = _1]) ) && c == 'a'); c = '\0'; BOOST_TEST(test( " a", phrase_match(char_stream[phx::ref(c) = _1], space) ) && c == 'a'); int i = 0; BOOST_TEST(test( "42", int_stream[phx::ref(i) = _1] ) && i == 42); i = 0; BOOST_TEST(test( "42", match(int_stream[phx::ref(i) = _1]) ) && i == 42); i = 0; BOOST_TEST(test( " 42", phrase_match(int_stream[phx::ref(i) = _1], space) ) && i == 42); /////////////////////////////////////////////////////////////////////// c = '\0'; BOOST_TEST(test( "a", match(stream, c) ) && c == 'a'); c = '\0'; BOOST_TEST(test( " a", phrase_match(stream, space, c) ) && c == 'a'); i = 0; BOOST_TEST(test( "42", match(stream, i) ) && i == 42); i = 0; BOOST_TEST(test( " 42", phrase_match(stream, space, i) ) && i == 42); } return boost::report_errors(); }