]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/test/x3/no_case.cpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / libs / spirit / test / x3 / no_case.cpp
1 /*=============================================================================
2 Copyright (c) 2001-2015 Joel de Guzman
3 http://spirit.sourceforge.net/
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 <boost/detail/lightweight_test.hpp>
10 #include <boost/spirit/home/x3.hpp>
11
12 #include <iostream>
13 #include "test.hpp"
14
15 int
16 main()
17 {
18 using spirit_test::test;
19 using spirit_test::test_attr;
20 using boost::spirit::x3::no_case;
21
22 {
23 using namespace boost::spirit::x3::ascii;
24 BOOST_TEST(test("x", no_case[char_]));
25 BOOST_TEST(test("X", no_case[char_('x')]));
26 BOOST_TEST(test("X", no_case[char_('X')]));
27 BOOST_TEST(test("x", no_case[char_('X')]));
28 BOOST_TEST(test("x", no_case[char_('x')]));
29 BOOST_TEST(!test("z", no_case[char_('X')]));
30 BOOST_TEST(!test("z", no_case[char_('x')]));
31 BOOST_TEST(test("x", no_case[char_('a', 'z')]));
32 BOOST_TEST(test("X", no_case[char_('a', 'z')]));
33 BOOST_TEST(!test("a", no_case[char_('b', 'z')]));
34 BOOST_TEST(!test("z", no_case[char_('a', 'y')]));
35 }
36 {
37 using namespace boost::spirit::x3::ascii;
38 BOOST_TEST(test("X", no_case['x']));
39 BOOST_TEST(test("X", no_case['X']));
40 BOOST_TEST(test("x", no_case['X']));
41 BOOST_TEST(test("x", no_case['x']));
42 BOOST_TEST(!test("z", no_case['X']));
43 BOOST_TEST(!test("z", no_case['x']));
44 }
45
46 {
47 using namespace boost::spirit::x3::iso8859_1;
48 BOOST_TEST(test("X", no_case[char_("a-z")]));
49 BOOST_TEST(!test("1", no_case[char_("a-z")]));
50 }
51
52 { // test extended ASCII characters
53 using namespace boost::spirit::x3::iso8859_1;
54 BOOST_TEST(test("\xC1", no_case[char_('\xE1')]));
55
56 BOOST_TEST(test("\xC9", no_case[char_("\xE5-\xEF")]));
57 BOOST_TEST(!test("\xFF", no_case[char_("\xE5-\xEF")]));
58
59 BOOST_TEST(test("\xC1\xE1", no_case[lit("\xE1\xC1")]));
60 BOOST_TEST(test("\xE1\xE1", no_case[no_case[lit("\xE1\xC1")]]));
61 }
62
63 {
64 using namespace boost::spirit::x3::ascii;
65 BOOST_TEST(test("Bochi Bochi", no_case[lit("bochi bochi")]));
66 BOOST_TEST(test("BOCHI BOCHI", no_case[lit("bochi bochi")]));
67 BOOST_TEST(!test("Vavoo", no_case[lit("bochi bochi")]));
68 }
69
70 {
71 // should work!
72 using namespace boost::spirit::x3::ascii;
73 BOOST_TEST(test("x", no_case[no_case[char_]]));
74 BOOST_TEST(test("x", no_case[no_case[char_('x')]]));
75 BOOST_TEST(test("yabadabadoo", no_case[no_case[lit("Yabadabadoo")]]));
76 }
77
78 {
79 using namespace boost::spirit::x3::ascii;
80 BOOST_TEST(test("X", no_case[alnum]));
81 BOOST_TEST(test("6", no_case[alnum]));
82 BOOST_TEST(!test(":", no_case[alnum]));
83
84 BOOST_TEST(test("X", no_case[lower]));
85 BOOST_TEST(test("x", no_case[lower]));
86 BOOST_TEST(test("X", no_case[upper]));
87 BOOST_TEST(test("x", no_case[upper]));
88 BOOST_TEST(!test(":", no_case[lower]));
89 BOOST_TEST(!test(":", no_case[upper]));
90 }
91
92 {
93 using namespace boost::spirit::x3::iso8859_1;
94 BOOST_TEST(test("X", no_case[alnum]));
95 BOOST_TEST(test("6", no_case[alnum]));
96 BOOST_TEST(!test(":", no_case[alnum]));
97
98 BOOST_TEST(test("X", no_case[lower]));
99 BOOST_TEST(test("x", no_case[lower]));
100 BOOST_TEST(test("X", no_case[upper]));
101 BOOST_TEST(test("x", no_case[upper]));
102 BOOST_TEST(!test(":", no_case[lower]));
103 BOOST_TEST(!test(":", no_case[upper]));
104 }
105
106 {
107 using namespace boost::spirit::x3::standard;
108 BOOST_TEST(test("X", no_case[alnum]));
109 BOOST_TEST(test("6", no_case[alnum]));
110 BOOST_TEST(!test(":", no_case[alnum]));
111
112 BOOST_TEST(test("X", no_case[lower]));
113 BOOST_TEST(test("x", no_case[lower]));
114 BOOST_TEST(test("X", no_case[upper]));
115 BOOST_TEST(test("x", no_case[upper]));
116 BOOST_TEST(!test(":", no_case[lower]));
117 BOOST_TEST(!test(":", no_case[upper]));
118 }
119
120 {
121 // chsets
122 namespace standard = boost::spirit::x3::standard;
123 namespace standard_wide = boost::spirit::x3::standard_wide;
124
125 BOOST_TEST(test("x", no_case[standard::char_("a-z")]));
126 BOOST_TEST(test("X", no_case[standard::char_("a-z")]));
127 BOOST_TEST(test(L"X", no_case[standard_wide::char_(L"a-z")]));
128 BOOST_TEST(test(L"X", no_case[standard_wide::char_(L"X")]));
129 }
130
131 {
132 using namespace boost::spirit::x3::standard;
133 std::string s("bochi bochi");
134 BOOST_TEST(test("Bochi Bochi", no_case[lit(s.c_str())]));
135 BOOST_TEST(test("Bochi Bochi", no_case[lit(s)]));
136 BOOST_TEST(test("Bochi Bochi", no_case[s.c_str()]));
137 BOOST_TEST(test("Bochi Bochi", no_case[s]));
138 }
139
140 {
141 {
142 using namespace boost::spirit::x3::standard;
143 BOOST_TEST(!test("ą", no_case['a']));
144 }
145 }
146
147 return boost::report_errors();
148 }