1/*=============================================================================
2 Copyright (c) 2001-2010 Hartmut Kaiser
3 Copyright (c) 2001-2010 Joel de Guzman
4
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
9#include "match_manip.hpp"
10
11int
12main()
13{
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_;
21
22 using namespace boost::spirit::ascii;
23 namespace fusion = boost::fusion;
24 namespace phx = boost::phoenix;
25
26 {
27 char a = '\0', b = '\0';
28 BOOST_TEST(test( "ab",
29 char_[phx::ref(a) = _1] >> char_[phx::ref(b) = _1]
30 ) && a == 'a' && b == 'b');
31
32 a = '\0', b = '\0';
33 BOOST_TEST(test( "ab",
34 match(char_[phx::ref(a) = _1] >> char_[phx::ref(b) = _1])
35 ) && a == 'a' && b == 'b');
36
37 a = '\0', b = '\0';
38 BOOST_TEST(test( " a b",
39 phrase_match(char_[phx::ref(a) = _1] >> char_[phx::ref(b) = _1], space)
40 ) && a == 'a' && b == 'b');
41
42 fusion::vector<char, char> t;
43 BOOST_TEST(test( "ab",
44 match(char_ >> char_, t)
45 ) && fusion::at_c<0>(t) == 'a' && fusion::at_c<1>(t) == 'b');
46
47 t = fusion::vector<char, char>();
48 BOOST_TEST(test( " a b",
49 phrase_match(char_ >> char_, space, t)
50 ) && fusion::at_c<0>(t) == 'a' && fusion::at_c<1>(t) == 'b');
51 }
52
53 {
54 char a = '\0', b = '\0', c = '\0';
55 BOOST_TEST(test( "abc",
56 char_[phx::ref(a) = _1] >> char_[phx::ref(b) = _1] >> char_[phx::ref(c) = _1]
57 ) && a == 'a' && b == 'b' && c == 'c');
58
59 BOOST_TEST(test( "abc",
60 match(char_('a') >> char_('b') >> char_('c'))
61 ));
62
63 BOOST_TEST(test( " a b c",
64 phrase_match(char_('a') >> char_('b') >> char_('c'), space)
65 ));
66
67 BOOST_TEST(!test( "abc",
68 match(char_('a') >> char_('b') >> char_('d'))
69 ));
70
71 BOOST_TEST(!test( " a b c",
72 phrase_match(char_('a') >> char_('b') >> char_('d'), space)
73 ));
74
75 fusion::vector<char, char, char> t;
76 BOOST_TEST(test( "abc",
77 match(char_ >> char_ >> char_, t)
78 ) && fusion::at_c<0>(t) == 'a' && fusion::at_c<1>(t) == 'b' && fusion::at_c<2>(t) == 'c');
79
80 t = fusion::vector<char, char, char>();
81 BOOST_TEST(test( " a b c",
82 phrase_match(char_ >> char_ >> char_, space, t)
83 ) && fusion::at_c<0>(t) == 'a' && fusion::at_c<1>(t) == 'b' && fusion::at_c<2>(t) == 'c');
84
85 t = fusion::vector<char, char, char>();
86 BOOST_TEST(test( "abc",
87 match(t)
88 ) && fusion::at_c<0>(t) == 'a' && fusion::at_c<1>(t) == 'b' && fusion::at_c<2>(t) == 'c');
89
90 t = fusion::vector<char, char, char>();
91 BOOST_TEST(test( " a b c",
92 phrase_match(t, space)
93 ) && fusion::at_c<0>(t) == 'a' && fusion::at_c<1>(t) == 'b' && fusion::at_c<2>(t) == 'c');
94 }
95
96 return boost::report_errors();
97}
98
99

source code of boost/libs/spirit/test/qi/match_manip2.cpp