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