]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/test/x3/no_case.cpp
update source to Ceph Pacific 16.2.2
[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 BOOST_SPIRIT_ASSERT_CONSTEXPR_CTORS(no_case['x']);
23
24 {
25 using namespace boost::spirit::x3::ascii;
26 BOOST_TEST(test("x", no_case[char_]));
27 BOOST_TEST(test("X", no_case[char_('x')]));
28 BOOST_TEST(test("X", no_case[char_('X')]));
29 BOOST_TEST(test("x", no_case[char_('X')]));
30 BOOST_TEST(test("x", no_case[char_('x')]));
31 BOOST_TEST(!test("z", no_case[char_('X')]));
32 BOOST_TEST(!test("z", no_case[char_('x')]));
33 BOOST_TEST(test("x", no_case[char_('a', 'z')]));
34 BOOST_TEST(test("X", no_case[char_('a', 'z')]));
35 BOOST_TEST(!test("a", no_case[char_('b', 'z')]));
36 BOOST_TEST(!test("z", no_case[char_('a', 'y')]));
37 }
38 {
39 using namespace boost::spirit::x3::ascii;
40 BOOST_TEST(test("X", no_case['x']));
41 BOOST_TEST(test("X", no_case['X']));
42 BOOST_TEST(test("x", no_case['X']));
43 BOOST_TEST(test("x", no_case['x']));
44 BOOST_TEST(!test("z", no_case['X']));
45 BOOST_TEST(!test("z", no_case['x']));
46 }
47
48 {
49 using namespace boost::spirit::x3::iso8859_1;
50 BOOST_TEST(test("X", no_case[char_("a-z")]));
51 BOOST_TEST(!test("1", no_case[char_("a-z")]));
52 }
53
54 { // test extended ASCII characters
55 using namespace boost::spirit::x3::iso8859_1;
56 BOOST_TEST(test("\xC1", no_case[char_('\xE1')]));
57
58 BOOST_TEST(test("\xC9", no_case[char_("\xE5-\xEF")]));
59 BOOST_TEST(!test("\xFF", no_case[char_("\xE5-\xEF")]));
60
61 BOOST_TEST(test("\xC1\xE1", no_case[lit("\xE1\xC1")]));
62 BOOST_TEST(test("\xE1\xE1", no_case[no_case[lit("\xE1\xC1")]]));
63 }
64
65 {
66 using namespace boost::spirit::x3::ascii;
67 BOOST_TEST(test("Bochi Bochi", no_case[lit("bochi bochi")]));
68 BOOST_TEST(test("BOCHI BOCHI", no_case[lit("bochi bochi")]));
69 BOOST_TEST(!test("Vavoo", no_case[lit("bochi bochi")]));
70 }
71
72 {
73 // should work!
74 using namespace boost::spirit::x3::ascii;
75 BOOST_TEST(test("x", no_case[no_case[char_]]));
76 BOOST_TEST(test("x", no_case[no_case[char_('x')]]));
77 BOOST_TEST(test("yabadabadoo", no_case[no_case[lit("Yabadabadoo")]]));
78 }
79
80 {
81 using namespace boost::spirit::x3::ascii;
82 BOOST_TEST(test("X", no_case[alnum]));
83 BOOST_TEST(test("6", no_case[alnum]));
84 BOOST_TEST(!test(":", no_case[alnum]));
85
86 BOOST_TEST(test("X", no_case[lower]));
87 BOOST_TEST(test("x", no_case[lower]));
88 BOOST_TEST(test("X", no_case[upper]));
89 BOOST_TEST(test("x", no_case[upper]));
90 BOOST_TEST(!test(":", no_case[lower]));
91 BOOST_TEST(!test(":", no_case[upper]));
92 }
93
94 {
95 using namespace boost::spirit::x3::iso8859_1;
96 BOOST_TEST(test("X", no_case[alnum]));
97 BOOST_TEST(test("6", no_case[alnum]));
98 BOOST_TEST(!test(":", no_case[alnum]));
99
100 BOOST_TEST(test("X", no_case[lower]));
101 BOOST_TEST(test("x", no_case[lower]));
102 BOOST_TEST(test("X", no_case[upper]));
103 BOOST_TEST(test("x", no_case[upper]));
104 BOOST_TEST(!test(":", no_case[lower]));
105 BOOST_TEST(!test(":", no_case[upper]));
106 }
107
108 {
109 using namespace boost::spirit::x3::standard;
110 BOOST_TEST(test("X", no_case[alnum]));
111 BOOST_TEST(test("6", no_case[alnum]));
112 BOOST_TEST(!test(":", no_case[alnum]));
113
114 BOOST_TEST(test("X", no_case[lower]));
115 BOOST_TEST(test("x", no_case[lower]));
116 BOOST_TEST(test("X", no_case[upper]));
117 BOOST_TEST(test("x", no_case[upper]));
118 BOOST_TEST(!test(":", no_case[lower]));
119 BOOST_TEST(!test(":", no_case[upper]));
120 }
121
122 {
123 // chsets
124 namespace standard = boost::spirit::x3::standard;
125 namespace standard_wide = boost::spirit::x3::standard_wide;
126
127 BOOST_TEST(test("x", no_case[standard::char_("a-z")]));
128 BOOST_TEST(test("X", no_case[standard::char_("a-z")]));
129 BOOST_TEST(test(L"X", no_case[standard_wide::char_(L"a-z")]));
130 BOOST_TEST(test(L"X", no_case[standard_wide::char_(L"X")]));
131 }
132
133 {
134 using namespace boost::spirit::x3::standard;
135 std::string s("bochi bochi");
136 BOOST_TEST(test("Bochi Bochi", no_case[lit(s.c_str())]));
137 BOOST_TEST(test("Bochi Bochi", no_case[lit(s)]));
138 BOOST_TEST(test("Bochi Bochi", no_case[s.c_str()]));
139 BOOST_TEST(test("Bochi Bochi", no_case[s]));
140 }
141
142 {
143 {
144 using namespace boost::spirit::x3::standard;
145 BOOST_TEST(!test("ą", no_case['a']));
146 }
147 }
148
149 return boost::report_errors();
150 }