]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/test/qi/no_case.cpp
1 /*=============================================================================
2 Copyright (c) 2001-2011 Joel de Guzman
3 http://spirit.sourceforge.net/
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 =============================================================================*/
9 // this file intentionally contains non-ascii characters
10 // boostinspect:noascii
12 #include <boost/detail/lightweight_test.hpp>
13 #include <boost/spirit/include/qi_char.hpp>
14 #include <boost/spirit/include/qi_string.hpp>
15 #include <boost/spirit/include/qi_directive.hpp>
16 #include <boost/spirit/include/qi_action.hpp>
17 #include <boost/spirit/include/phoenix_core.hpp>
18 #include <boost/spirit/include/phoenix_operator.hpp>
26 using spirit_test::test
;
27 using spirit_test::test_attr
;
28 using boost::spirit::qi::lit
;
31 using namespace boost::spirit::ascii
;
32 BOOST_TEST(test("x", no_case
[char_
]));
33 BOOST_TEST(test("X", no_case
[char_('x')]));
34 BOOST_TEST(test("X", no_case
[char_('X')]));
35 BOOST_TEST(test("x", no_case
[char_('X')]));
36 BOOST_TEST(test("x", no_case
[char_('x')]));
37 BOOST_TEST(!test("z", no_case
[char_('X')]));
38 BOOST_TEST(!test("z", no_case
[char_('x')]));
39 BOOST_TEST(test("x", no_case
[char_('a', 'z')]));
40 BOOST_TEST(test("X", no_case
[char_('a', 'z')]));
41 BOOST_TEST(!test("a", no_case
[char_('b', 'z')]));
42 BOOST_TEST(!test("z", no_case
[char_('a', 'y')]));
46 using namespace boost::spirit::ascii
;
47 BOOST_TEST(test("X", no_case
['x']));
48 BOOST_TEST(test("X", no_case
['X']));
49 BOOST_TEST(test("x", no_case
['X']));
50 BOOST_TEST(test("x", no_case
['x']));
51 BOOST_TEST(!test("z", no_case
['X']));
52 BOOST_TEST(!test("z", no_case
['x']));
55 // needed for VC7.1 only
56 #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
57 #pragma setlocale("french")
60 using namespace boost::spirit::iso8859_1
;
61 BOOST_TEST(test("Á", no_case
[char_('á')]));
65 using namespace boost::spirit::iso8859_1
;
66 BOOST_TEST(test("X", no_case
[char_("a-z")]));
67 BOOST_TEST(!test("1", no_case
[char_("a-z")]));
69 BOOST_TEST(test("É", no_case
[char_("å-ï")]));
70 BOOST_TEST(!test("ÿ", no_case
[char_("å-ï")]));
72 #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
77 using namespace boost::spirit::ascii
;
78 BOOST_TEST(test("Bochi Bochi", no_case
[lit("bochi bochi")]));
79 BOOST_TEST(test("BOCHI BOCHI", no_case
[lit("bochi bochi")]));
80 BOOST_TEST(!test("Vavoo", no_case
[lit("bochi bochi")]));
83 #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
84 #pragma setlocale("french")
87 using namespace boost::spirit::iso8859_1
;
88 BOOST_TEST(test("Áá", no_case
[lit("áÁ")]));
89 BOOST_TEST(test("áá", no_case
[no_case
[lit("áÁ")]]));
91 #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310))
97 using namespace boost::spirit::ascii
;
98 BOOST_TEST(test("x", no_case
[no_case
[char_
]]));
99 BOOST_TEST(test("x", no_case
[no_case
[char_('x')]]));
100 BOOST_TEST(test("yabadabadoo", no_case
[no_case
[lit("Yabadabadoo")]]));
104 using namespace boost::spirit::ascii
;
105 BOOST_TEST(test("X", no_case
[alnum
]));
106 BOOST_TEST(test("6", no_case
[alnum
]));
107 BOOST_TEST(!test(":", no_case
[alnum
]));
109 BOOST_TEST(test("X", no_case
[lower
]));
110 BOOST_TEST(test("x", no_case
[lower
]));
111 BOOST_TEST(test("X", no_case
[upper
]));
112 BOOST_TEST(test("x", no_case
[upper
]));
113 BOOST_TEST(!test(":", no_case
[lower
]));
114 BOOST_TEST(!test(":", no_case
[upper
]));
118 using namespace boost::spirit::iso8859_1
;
119 BOOST_TEST(test("X", no_case
[alnum
]));
120 BOOST_TEST(test("6", no_case
[alnum
]));
121 BOOST_TEST(!test(":", no_case
[alnum
]));
123 BOOST_TEST(test("X", no_case
[lower
]));
124 BOOST_TEST(test("x", no_case
[lower
]));
125 BOOST_TEST(test("X", no_case
[upper
]));
126 BOOST_TEST(test("x", no_case
[upper
]));
127 BOOST_TEST(!test(":", no_case
[lower
]));
128 BOOST_TEST(!test(":", no_case
[upper
]));
132 using namespace boost::spirit::standard
;
133 BOOST_TEST(test("X", no_case
[alnum
]));
134 BOOST_TEST(test("6", no_case
[alnum
]));
135 BOOST_TEST(!test(":", no_case
[alnum
]));
137 BOOST_TEST(test("X", no_case
[lower
]));
138 BOOST_TEST(test("x", no_case
[lower
]));
139 BOOST_TEST(test("X", no_case
[upper
]));
140 BOOST_TEST(test("x", no_case
[upper
]));
141 BOOST_TEST(!test(":", no_case
[lower
]));
142 BOOST_TEST(!test(":", no_case
[upper
]));
147 namespace standard
= boost::spirit::standard
;
148 namespace standard_wide
= boost::spirit::standard_wide
;
150 BOOST_TEST(test("x", standard::no_case
[standard::char_("a-z")]));
151 BOOST_TEST(test("X", standard::no_case
[standard::char_("a-z")]));
152 BOOST_TEST(test(L
"X", standard_wide::no_case
[standard_wide::char_(L
"a-z")]));
153 BOOST_TEST(test(L
"X", standard_wide::no_case
[standard_wide::char_(L
"X")]));
157 using namespace boost::spirit::standard
;
158 std::string
s("bochi bochi");
159 BOOST_TEST(test("Bochi Bochi", no_case
[lit(s
.c_str())]));
160 BOOST_TEST(test("Bochi Bochi", no_case
[lit(s
)]));
161 BOOST_TEST(test("Bochi Bochi", no_case
[s
.c_str()]));
162 BOOST_TEST(test("Bochi Bochi", no_case
[s
]));
165 { // lazy no_case chars
167 using namespace boost::spirit::ascii
;
169 using boost::phoenix::val
;
170 using boost::phoenix::ref
;
171 using boost::spirit::_1
;
173 BOOST_TEST((test("X", no_case
[val('x')])));
174 BOOST_TEST((test("h", no_case
[char_(val('a'), val('n'))])));
175 BOOST_TEST(test("0", no_case
[char_(val("a-z0-9"))]));
177 char ch
; // make sure lazy chars have an attribute
178 BOOST_TEST(test("x", no_case
[char_(val('x'))][ref(ch
) = _1
]));
179 BOOST_TEST(ch
== 'x');
182 { // lazy no_case lits
184 using namespace boost::spirit::ascii
;
185 using boost::phoenix::val
;
187 BOOST_TEST(test("Bochi Bochi", no_case
[val("bochi bochi")]));
188 BOOST_TEST(test("BOCHI BOCHI", no_case
[val("bochi bochi")]));
189 BOOST_TEST(!test("Vavoo", no_case
[val("bochi bochi")]));
192 return boost::report_errors();