1 | // Copyright (c) 2001-2011 Hartmut Kaiser |
2 | // |
3 | // Distributed under the Boost Software License, Version 1.0. (See accompanying |
4 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
5 | |
6 | #include <boost/spirit/include/qi_parse_attr.hpp> |
7 | |
8 | #include <boost/spirit/include/qi_char.hpp> |
9 | #include <boost/spirit/include/qi_operator.hpp> |
10 | |
11 | #include "test_attr.hpp" |
12 | |
13 | #if SPIRIT_ARGUMENTS_LIMIT < 10 |
14 | # error SPIRIT_ARGUMENTS_LIMIT must be at least 10 to run the test |
15 | #endif |
16 | |
17 | using namespace spirit_test; |
18 | |
19 | /////////////////////////////////////////////////////////////////////////////// |
20 | int main() |
21 | { |
22 | using namespace boost::spirit; |
23 | |
24 | { |
25 | using namespace boost::spirit::ascii; |
26 | |
27 | BOOST_TEST(test("1" , char_, '1')); |
28 | BOOST_TEST(test("12" , char_ >> char_, '1', '2')); |
29 | BOOST_TEST(test("123" , char_ >> char_ >> char_, '1', '2', '3')); |
30 | BOOST_TEST(test("1234" |
31 | , char_ >> char_ >> char_ >> char_ |
32 | , '1', '2', '3', '4')); |
33 | BOOST_TEST(test("12345" |
34 | , char_ >> char_ >> char_ >> char_ >> char_ |
35 | , '1', '2', '3', '4', '5')); |
36 | BOOST_TEST(test("123456" |
37 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
38 | , '1', '2', '3', '4', '5', '6')); |
39 | BOOST_TEST(test("1234567" |
40 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
41 | , '1', '2', '3', '4', '5', '6', '7')); |
42 | BOOST_TEST(test("12345678" |
43 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
44 | , '1', '2', '3', '4', '5', '6', '7', '8')); |
45 | BOOST_TEST(test("123456789" |
46 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
47 | , '1', '2', '3', '4', '5', '6', '7', '8', '9')); |
48 | BOOST_TEST(test("1234567890" |
49 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
50 | , '1', '2', '3', '4', '5', '6', '7', '8', '9', '0')); |
51 | } |
52 | |
53 | { |
54 | using namespace boost::spirit::ascii; |
55 | |
56 | BOOST_TEST(test_skipped(" 1 " , char_, space, '1')); |
57 | BOOST_TEST(test_skipped(" 1 2 " |
58 | , char_ >> char_, space, '1', '2')); |
59 | BOOST_TEST(test_skipped(" 1 2 3 " |
60 | , char_ >> char_ >> char_, space, '1', '2', '3')); |
61 | BOOST_TEST(test_skipped(" 1 2 3 4 " |
62 | , char_ >> char_ >> char_ >> char_ |
63 | , space, '1', '2', '3', '4')); |
64 | BOOST_TEST(test_skipped(" 1 2 3 4 5 " |
65 | , char_ >> char_ >> char_ >> char_ >> char_ |
66 | , space, '1', '2', '3', '4', '5')); |
67 | BOOST_TEST(test_skipped(" 1 2 3 4 5 6 " |
68 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
69 | , space, '1', '2', '3', '4', '5', '6')); |
70 | BOOST_TEST(test_skipped(" 1 2 3 4 5 6 7 " |
71 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
72 | , space, '1', '2', '3', '4', '5', '6', '7')); |
73 | BOOST_TEST(test_skipped(" 1 2 3 4 5 6 7 8 " |
74 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
75 | , space, '1', '2', '3', '4', '5', '6', '7', '8')); |
76 | BOOST_TEST(test_skipped(" 1 2 3 4 5 6 7 8 9 " |
77 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
78 | , space, '1', '2', '3', '4', '5', '6', '7', '8', '9')); |
79 | BOOST_TEST(test_skipped(" 1 2 3 4 5 6 7 8 9 0 " |
80 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
81 | , space, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0')); |
82 | } |
83 | |
84 | { |
85 | using namespace boost::spirit::ascii; |
86 | using boost::spirit::qi::skip_flag; |
87 | |
88 | BOOST_TEST(test_postskipped(" 1 " , char_, space |
89 | , skip_flag::postskip, '1')); |
90 | BOOST_TEST(test_postskipped(" 1 2 " |
91 | , char_ >> char_, space, skip_flag::postskip |
92 | , '1', '2')); |
93 | BOOST_TEST(test_postskipped(" 1 2 3 " |
94 | , char_ >> char_ >> char_, space |
95 | , skip_flag::postskip, '1', '2', '3')); |
96 | BOOST_TEST(test_postskipped(" 1 2 3 4 " |
97 | , char_ >> char_ >> char_ >> char_ |
98 | , space, skip_flag::postskip, '1', '2', '3', '4')); |
99 | BOOST_TEST(test_postskipped(" 1 2 3 4 5 " |
100 | , char_ >> char_ >> char_ >> char_ >> char_ |
101 | , space, skip_flag::postskip, '1', '2', '3', '4', '5')); |
102 | BOOST_TEST(test_postskipped(" 1 2 3 4 5 6 " |
103 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
104 | , space, skip_flag::postskip |
105 | , '1', '2', '3', '4', '5', '6')); |
106 | BOOST_TEST(test_postskipped(" 1 2 3 4 5 6 7 " |
107 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
108 | , space, skip_flag::postskip |
109 | , '1', '2', '3', '4', '5', '6', '7')); |
110 | BOOST_TEST(test_postskipped(" 1 2 3 4 5 6 7 8 " |
111 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
112 | , space, skip_flag::postskip |
113 | , '1', '2', '3', '4', '5', '6', '7', '8')); |
114 | BOOST_TEST(test_postskipped(" 1 2 3 4 5 6 7 8 9 " |
115 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
116 | , space, skip_flag::postskip |
117 | , '1', '2', '3', '4', '5', '6', '7', '8', '9')); |
118 | BOOST_TEST(test_postskipped(" 1 2 3 4 5 6 7 8 9 0 " |
119 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
120 | , space, skip_flag::postskip |
121 | , '1', '2', '3', '4', '5', '6', '7', '8', '9', '0')); |
122 | } |
123 | |
124 | { |
125 | using namespace boost::spirit::ascii; |
126 | using boost::spirit::qi::skip_flag; |
127 | |
128 | BOOST_TEST(test_postskipped(" 1" , char_, space |
129 | , skip_flag::dont_postskip, '1')); |
130 | BOOST_TEST(test_postskipped(" 1 2" |
131 | , char_ >> char_, space, skip_flag::dont_postskip |
132 | , '1', '2')); |
133 | BOOST_TEST(test_postskipped(" 1 2 3" |
134 | , char_ >> char_ >> char_, space |
135 | , skip_flag::dont_postskip, '1', '2', '3')); |
136 | BOOST_TEST(test_postskipped(" 1 2 3 4" |
137 | , char_ >> char_ >> char_ >> char_ |
138 | , space, skip_flag::dont_postskip, '1', '2', '3', '4')); |
139 | BOOST_TEST(test_postskipped(" 1 2 3 4 5" |
140 | , char_ >> char_ >> char_ >> char_ >> char_ |
141 | , space, skip_flag::dont_postskip, '1', '2', '3', '4', '5')); |
142 | BOOST_TEST(test_postskipped(" 1 2 3 4 5 6" |
143 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
144 | , space, skip_flag::dont_postskip |
145 | , '1', '2', '3', '4', '5', '6')); |
146 | BOOST_TEST(test_postskipped(" 1 2 3 4 5 6 7" |
147 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
148 | , space, skip_flag::dont_postskip |
149 | , '1', '2', '3', '4', '5', '6', '7')); |
150 | BOOST_TEST(test_postskipped(" 1 2 3 4 5 6 7 8" |
151 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
152 | , space, skip_flag::dont_postskip |
153 | , '1', '2', '3', '4', '5', '6', '7', '8')); |
154 | BOOST_TEST(test_postskipped(" 1 2 3 4 5 6 7 8 9" |
155 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
156 | , space, skip_flag::dont_postskip |
157 | , '1', '2', '3', '4', '5', '6', '7', '8', '9')); |
158 | BOOST_TEST(test_postskipped(" 1 2 3 4 5 6 7 8 9 0" |
159 | , char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ >> char_ |
160 | , space, skip_flag::dont_postskip |
161 | , '1', '2', '3', '4', '5', '6', '7', '8', '9', '0')); |
162 | } |
163 | |
164 | return boost::report_errors(); |
165 | } |
166 | |
167 | |