]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/test/qi/char1.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / spirit / test / qi / char1.cpp
1 /*=============================================================================
2 Copyright (c) 2001-2011 Joel de Guzman
3 Copyright (c) 2001-2011 Hartmut Kaiser
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 #include <boost/detail/lightweight_test.hpp>
9 #include <boost/spirit/include/qi_char.hpp>
10 #include <boost/spirit/include/qi_action.hpp>
11 #include <boost/spirit/include/phoenix_core.hpp>
12 #include <boost/spirit/include/phoenix_operator.hpp>
13
14 #include <iostream>
15 #include "test.hpp"
16
17 int
18 main()
19 {
20 using spirit_test::test;
21 using spirit_test::test_attr;
22 using spirit_test::print_info;
23
24 {
25 using namespace boost::spirit::ascii;
26
27 BOOST_TEST(test("x", 'x'));
28 BOOST_TEST(test(L"x", L'x'));
29 BOOST_TEST(!test("y", 'x'));
30 BOOST_TEST(!test(L"y", L'x'));
31
32 BOOST_TEST(test("x", char_));
33 BOOST_TEST(test("x", char_('x')));
34 BOOST_TEST(!test("x", char_('y')));
35 BOOST_TEST(test("x", char_('a', 'z')));
36 BOOST_TEST(!test("x", char_('0', '9')));
37
38 BOOST_TEST(!test("x", ~char_));
39 BOOST_TEST(!test("x", ~char_('x')));
40 BOOST_TEST(test(" ", ~char_('x')));
41 BOOST_TEST(test("X", ~char_('x')));
42 BOOST_TEST(!test("x", ~char_('b', 'y')));
43 BOOST_TEST(test("a", ~char_('b', 'y')));
44 BOOST_TEST(test("z", ~char_('b', 'y')));
45
46 BOOST_TEST(test("x", ~~char_));
47 BOOST_TEST(test("x", ~~char_('x')));
48 BOOST_TEST(!test(" ", ~~char_('x')));
49 BOOST_TEST(!test("X", ~~char_('x')));
50 BOOST_TEST(test("x", ~~char_('b', 'y')));
51 BOOST_TEST(!test("a", ~~char_('b', 'y')));
52 BOOST_TEST(!test("z", ~~char_('b', 'y')));
53 }
54
55 {
56 using namespace boost::spirit::ascii;
57
58 BOOST_TEST(test(" x", 'x', space));
59 BOOST_TEST(test(L" x", L'x', space));
60
61 BOOST_TEST(test(" x", char_, space));
62 BOOST_TEST(test(" x", char_('x'), space));
63 BOOST_TEST(!test(" x", char_('y'), space));
64 BOOST_TEST(test(" x", char_('a', 'z'), space));
65 BOOST_TEST(!test(" x", char_('0', '9'), space));
66 }
67
68 {
69 using namespace boost::spirit::standard_wide;
70
71 BOOST_TEST(test(L"x", char_));
72 BOOST_TEST(test(L"x", char_(L'x')));
73 BOOST_TEST(!test(L"x", char_(L'y')));
74 BOOST_TEST(test(L"x", char_(L'a', L'z')));
75 BOOST_TEST(!test(L"x", char_(L'0', L'9')));
76
77 BOOST_TEST(!test(L"x", ~char_));
78 BOOST_TEST(!test(L"x", ~char_(L'x')));
79 BOOST_TEST(test(L" ", ~char_(L'x')));
80 BOOST_TEST(test(L"X", ~char_(L'x')));
81 BOOST_TEST(!test(L"x", ~char_(L'b', L'y')));
82 BOOST_TEST(test(L"a", ~char_(L'b', L'y')));
83 BOOST_TEST(test(L"z", ~char_(L'b', L'y')));
84
85 BOOST_TEST(test(L"x", ~~char_));
86 BOOST_TEST(test(L"x", ~~char_(L'x')));
87 BOOST_TEST(!test(L" ", ~~char_(L'x')));
88 BOOST_TEST(!test(L"X", ~~char_(L'x')));
89 BOOST_TEST(test(L"x", ~~char_(L'b', L'y')));
90 BOOST_TEST(!test(L"a", ~~char_(L'b', L'y')));
91 BOOST_TEST(!test(L"z", ~~char_(L'b', L'y')));
92 }
93
94
95 { // single char strings!
96 namespace ascii = boost::spirit::ascii;
97 namespace wide = boost::spirit::standard_wide;
98
99 BOOST_TEST(test("x", "x"));
100 BOOST_TEST(test(L"x", L"x"));
101 BOOST_TEST(test("x", ascii::char_("x")));
102 BOOST_TEST(test(L"x", wide::char_(L"x")));
103
104 BOOST_TEST(test("x", ascii::char_("a", "z")));
105 BOOST_TEST(test(L"x", ascii::char_(L"a", L"z")));
106 }
107
108 {
109 // chsets
110 namespace ascii = boost::spirit::ascii;
111 namespace wide = boost::spirit::standard_wide;
112
113 BOOST_TEST(test("x", ascii::char_("a-z")));
114 BOOST_TEST(!test("1", ascii::char_("a-z")));
115 BOOST_TEST(test("1", ascii::char_("a-z0-9")));
116
117 BOOST_TEST(test("x", wide::char_(L"a-z")));
118 BOOST_TEST(!test("1", wide::char_(L"a-z")));
119 BOOST_TEST(test("1", wide::char_(L"a-z0-9")));
120
121 std::string set = "a-z0-9";
122 BOOST_TEST(test("x", ascii::char_(set)));
123
124 #ifdef SPIRIT_NO_COMPILE_CHECK
125 test("", ascii::char_(L"a-z0-9"));
126 #endif
127 }
128
129 { // lazy chars
130
131 using namespace boost::spirit::ascii;
132
133 using boost::phoenix::val;
134 using boost::phoenix::ref;
135 using boost::spirit::_1;
136
137 BOOST_TEST((test("x", char_(val('x')))));
138 BOOST_TEST((test("h", char_(val('a'), val('n')))));
139 BOOST_TEST(test("0", char_(val("a-z0-9"))));
140
141 char ch; // make sure lazy chars have an attribute
142 BOOST_TEST(test("x", char_(val('x'))[ref(ch) = _1]));
143 BOOST_TEST(ch == 'x');
144 }
145
146 { // testing "what"
147
148 using boost::spirit::qi::what;
149 using boost::spirit::ascii::char_;
150 using boost::spirit::ascii::alpha;
151
152 print_info(what('x'));
153 print_info(what(char_('a','z')));
154 print_info(what(alpha));
155 }
156
157 return boost::report_errors();
158 }