]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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 | ||
1e59de90 | 6 | #include <boost/spirit/include/karma_char_class.hpp> |
7c673cae FG |
7 | |
8 | #include <boost/spirit/include/karma_char.hpp> | |
9 | #include <boost/spirit/include/karma_generate.hpp> | |
10 | #include <boost/spirit/include/karma_directive.hpp> | |
11 | ||
12 | #include <string> | |
13 | #include <iterator> | |
14 | ||
15 | #include "test.hpp" | |
16 | ||
17 | /////////////////////////////////////////////////////////////////////////////// | |
18 | int main() | |
19 | { | |
20 | using namespace spirit_test; | |
21 | using namespace boost::spirit; | |
22 | ||
23 | { | |
24 | using namespace boost::spirit::ascii; | |
25 | BOOST_TEST(test("a", alpha, 'a')); | |
26 | BOOST_TEST(!test("", alpha, '1')); | |
27 | BOOST_TEST(test(" ", blank, ' ')); | |
28 | BOOST_TEST(!test("", blank, 'x')); | |
29 | BOOST_TEST(test("1", digit, '1')); | |
30 | BOOST_TEST(!test("", digit, 'x')); | |
31 | BOOST_TEST(test("a", lower, 'a')); | |
32 | BOOST_TEST(!test("", lower, 'A')); | |
33 | BOOST_TEST(test("!", punct, '!')); | |
34 | BOOST_TEST(!test("", punct, 'x')); | |
35 | BOOST_TEST(test(" ", space)); | |
36 | BOOST_TEST(test(" ", space, ' ')); | |
37 | BOOST_TEST(!test("", space, '\n')); | |
38 | BOOST_TEST(test("\r", space, '\r')); | |
39 | BOOST_TEST(test("\t", space, '\t')); | |
40 | BOOST_TEST(test("A", upper, 'A')); | |
41 | BOOST_TEST(!test("", upper, 'a')); | |
42 | BOOST_TEST(test("A", xdigit, 'A')); | |
43 | BOOST_TEST(test("0", xdigit, '0')); | |
44 | BOOST_TEST(test("f", xdigit, 'f')); | |
45 | BOOST_TEST(!test("", xdigit, 'g')); | |
46 | } | |
47 | ||
48 | { | |
49 | using namespace boost::spirit::ascii; | |
50 | BOOST_TEST(!test("", ~alpha, 'a')); | |
51 | BOOST_TEST(test("1", ~alpha, '1')); | |
52 | BOOST_TEST(!test("", ~blank, ' ')); | |
53 | BOOST_TEST(test("x", ~blank, 'x')); | |
54 | BOOST_TEST(!test("", ~digit, '1')); | |
55 | BOOST_TEST(test("x", ~digit, 'x')); | |
56 | BOOST_TEST(!test("", ~lower, 'a')); | |
57 | BOOST_TEST(test("A", ~lower, 'A')); | |
58 | BOOST_TEST(!test("", ~punct, '!')); | |
59 | BOOST_TEST(test("x", ~punct, 'x')); | |
60 | BOOST_TEST(!test("", ~space)); | |
61 | BOOST_TEST(!test("", ~space, ' ')); | |
62 | BOOST_TEST(!test("", ~space, '\r')); | |
63 | BOOST_TEST(!test("", ~space, '\t')); | |
64 | BOOST_TEST(!test("", ~upper, 'A')); | |
65 | BOOST_TEST(test("a", ~upper, 'a')); | |
66 | BOOST_TEST(!test("", ~xdigit, 'A')); | |
67 | BOOST_TEST(!test("", ~xdigit, '0')); | |
68 | BOOST_TEST(!test("", ~xdigit, 'f')); | |
69 | BOOST_TEST(test("g", ~xdigit, 'g')); | |
70 | } | |
71 | ||
72 | { | |
73 | using namespace boost::spirit::ascii; | |
74 | BOOST_TEST(test("a", ~~alpha, 'a')); | |
75 | BOOST_TEST(!test("", ~~alpha, '1')); | |
76 | BOOST_TEST(test(" ", ~~blank, ' ')); | |
77 | BOOST_TEST(!test("", ~~blank, 'x')); | |
78 | BOOST_TEST(test("1", ~~digit, '1')); | |
79 | BOOST_TEST(!test("", ~~digit, 'x')); | |
80 | BOOST_TEST(test("a", ~~lower, 'a')); | |
81 | BOOST_TEST(!test("", ~~lower, 'A')); | |
82 | BOOST_TEST(test("!", ~~punct, '!')); | |
83 | BOOST_TEST(!test("", ~~punct, 'x')); | |
84 | BOOST_TEST(test(" ", ~~space)); | |
85 | BOOST_TEST(test(" ", ~~space, ' ')); | |
86 | BOOST_TEST(!test("", ~~space, '\n')); | |
87 | BOOST_TEST(test("\r", ~~space, '\r')); | |
88 | BOOST_TEST(test("\t", ~~space, '\t')); | |
89 | BOOST_TEST(test("A", ~~upper, 'A')); | |
90 | BOOST_TEST(!test("", ~~upper, 'a')); | |
91 | BOOST_TEST(test("A", ~~xdigit, 'A')); | |
92 | BOOST_TEST(test("0", ~~xdigit, '0')); | |
93 | BOOST_TEST(test("f", ~~xdigit, 'f')); | |
94 | BOOST_TEST(!test("", ~~xdigit, 'g')); | |
95 | } | |
96 | ||
97 | { | |
98 | using namespace boost::spirit::ascii; | |
99 | BOOST_TEST(test("a", lower[alpha], 'a')); | |
100 | BOOST_TEST(!test("", lower[alpha], 'A')); | |
101 | BOOST_TEST(!test("", lower[alpha], '1')); | |
102 | BOOST_TEST(test("a", lower[alnum], 'a')); | |
103 | BOOST_TEST(!test("", lower[alnum], 'A')); | |
104 | BOOST_TEST(test("1", lower[alnum], '1')); | |
105 | ||
106 | BOOST_TEST(!test("", upper[alpha], 'a')); | |
107 | BOOST_TEST(test("A", upper[alpha], 'A')); | |
108 | BOOST_TEST(!test("", upper[alpha], '1')); | |
109 | BOOST_TEST(!test("", upper[alnum], 'a')); | |
110 | BOOST_TEST(test("A", upper[alnum], 'A')); | |
111 | BOOST_TEST(test("1", upper[alnum], '1')); | |
112 | } | |
113 | ||
114 | { | |
115 | using namespace boost::spirit::iso8859_1; | |
116 | BOOST_TEST(test("a", alpha, 'a')); | |
117 | BOOST_TEST(!test("", alpha, '1')); | |
118 | BOOST_TEST(test(" ", blank, ' ')); | |
119 | BOOST_TEST(!test("", blank, 'x')); | |
120 | BOOST_TEST(test("1", digit, '1')); | |
121 | BOOST_TEST(!test("", digit, 'x')); | |
122 | BOOST_TEST(test("a", lower, 'a')); | |
123 | BOOST_TEST(!test("", lower, 'A')); | |
124 | BOOST_TEST(test("!", punct, '!')); | |
125 | BOOST_TEST(!test("", punct, 'x')); | |
126 | BOOST_TEST(test(" ", space)); | |
127 | BOOST_TEST(test(" ", space, ' ')); | |
128 | BOOST_TEST(!test("", space, '\n')); | |
129 | BOOST_TEST(test("\r", space, '\r')); | |
130 | BOOST_TEST(test("\t", space, '\t')); | |
131 | BOOST_TEST(test("A", upper, 'A')); | |
132 | BOOST_TEST(!test("", upper, 'a')); | |
133 | BOOST_TEST(test("A", xdigit, 'A')); | |
134 | BOOST_TEST(test("0", xdigit, '0')); | |
135 | BOOST_TEST(test("f", xdigit, 'f')); | |
136 | BOOST_TEST(!test("", xdigit, 'g')); | |
137 | ||
138 | ||
92f5a8d4 TL |
139 | // test extended ASCII characters |
140 | BOOST_TEST(test("\xE9", alpha, '\xE9')); | |
141 | BOOST_TEST(test("\xE9", lower, '\xE9')); | |
142 | BOOST_TEST(!test("", upper, '\xE9')); | |
7c673cae FG |
143 | } |
144 | ||
145 | { | |
146 | using namespace boost::spirit::standard; | |
147 | BOOST_TEST(test("a", alpha, 'a')); | |
148 | BOOST_TEST(!test("", alpha, '1')); | |
149 | BOOST_TEST(test(" ", blank, ' ')); | |
150 | BOOST_TEST(!test("", blank, 'x')); | |
151 | BOOST_TEST(test("1", digit, '1')); | |
152 | BOOST_TEST(!test("", digit, 'x')); | |
153 | BOOST_TEST(test("a", lower, 'a')); | |
154 | BOOST_TEST(!test("", lower, 'A')); | |
155 | BOOST_TEST(test("!", punct, '!')); | |
156 | BOOST_TEST(!test("", punct, 'x')); | |
157 | BOOST_TEST(test(" ", space)); | |
158 | BOOST_TEST(test(" ", space, ' ')); | |
159 | BOOST_TEST(!test("", space, '\n')); | |
160 | BOOST_TEST(test("\r", space, '\r')); | |
161 | BOOST_TEST(test("\t", space, '\t')); | |
162 | BOOST_TEST(test("A", upper, 'A')); | |
163 | BOOST_TEST(!test("", upper, 'a')); | |
164 | BOOST_TEST(test("A", xdigit, 'A')); | |
165 | BOOST_TEST(test("0", xdigit, '0')); | |
166 | BOOST_TEST(test("f", xdigit, 'f')); | |
167 | BOOST_TEST(!test("", xdigit, 'g')); | |
168 | } | |
169 | ||
170 | { | |
171 | using namespace boost::spirit::standard_wide; | |
172 | BOOST_TEST(test(L"a", alpha, L'a')); | |
173 | BOOST_TEST(!test(L"", alpha, L'1')); | |
174 | BOOST_TEST(test(L" ", blank, L' ')); | |
175 | BOOST_TEST(!test(L"", blank, L'x')); | |
176 | BOOST_TEST(test(L"1", digit, L'1')); | |
177 | BOOST_TEST(!test(L"", digit, L'x')); | |
178 | BOOST_TEST(test(L"a", lower, L'a')); | |
179 | BOOST_TEST(!test(L"", lower, L'A')); | |
180 | BOOST_TEST(test(L"!", punct, L'!')); | |
181 | BOOST_TEST(!test(L"", punct, L'x')); | |
182 | BOOST_TEST(test(L" ", space)); | |
183 | BOOST_TEST(test(L" ", space, L' ')); | |
184 | BOOST_TEST(!test(L"", space, L'\n')); | |
185 | BOOST_TEST(test(L"\r", space, L'\r')); | |
186 | BOOST_TEST(test(L"\t", space, L'\t')); | |
187 | BOOST_TEST(test(L"A", upper, L'A')); | |
188 | BOOST_TEST(!test(L"", upper, L'a')); | |
189 | BOOST_TEST(test(L"A", xdigit, L'A')); | |
190 | BOOST_TEST(test(L"0", xdigit, L'0')); | |
191 | BOOST_TEST(test(L"f", xdigit, L'f')); | |
192 | BOOST_TEST(!test(L"", xdigit, L'g')); | |
193 | } | |
194 | ||
195 | return boost::report_errors(); | |
196 | } |