diff options
Diffstat (limited to 'src/boost/libs/spirit/test/qi/match_manip1.cpp')
-rw-r--r-- | src/boost/libs/spirit/test/qi/match_manip1.cpp | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/src/boost/libs/spirit/test/qi/match_manip1.cpp b/src/boost/libs/spirit/test/qi/match_manip1.cpp new file mode 100644 index 00000000..c9733f4f --- /dev/null +++ b/src/boost/libs/spirit/test/qi/match_manip1.cpp @@ -0,0 +1,116 @@ +/*============================================================================= + 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> char_stream_type; + char_stream_type const char_stream = char_stream_type(); + + typedef typed_stream<int> 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(); +} + |