]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/test/karma/lit.cpp
1 // Copyright (c) 2001-2011 Hartmut Kaiser
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)
6 #include <boost/config/warning_disable.hpp>
7 #include <boost/detail/lightweight_test.hpp>
9 #include <boost/spirit/include/karma_char.hpp>
10 #include <boost/spirit/include/karma_string.hpp>
11 #include <boost/spirit/include/karma_generate.hpp>
12 #include <boost/spirit/include/karma_action.hpp>
13 #include <boost/spirit/include/support_argument.hpp>
14 #include <boost/spirit/include/phoenix_core.hpp>
15 #include <boost/spirit/include/phoenix_operator.hpp>
19 using namespace spirit_test
;
21 ///////////////////////////////////////////////////////////////////////////////
25 using namespace boost::spirit
;
28 using namespace boost::spirit::ascii
;
30 BOOST_TEST(test("a", lit('a')));
31 BOOST_TEST(!test("a", lit('b')));
33 BOOST_TEST(test("abc", "abc"));
34 BOOST_TEST(!test("abcd", "abc"));
36 BOOST_TEST(test("abc", lit("abc")));
37 BOOST_TEST(!test("abcd", lit("abc")));
39 BOOST_TEST(test("abc", string
, "abc"));
40 BOOST_TEST(!test("abcd", string
, "abc"));
42 BOOST_TEST(test("abc", string("abc")));
43 BOOST_TEST(!test("abcd", string("abc")));
45 BOOST_TEST(test("abc", string("abc"), "abc"));
46 BOOST_TEST(!test("", string("abc"), "abcd"));
47 BOOST_TEST(!test("", string("abcd"), "abc"));
48 BOOST_TEST(!test("", string("abc"), "abcd")); // don't match prefixes only
52 using namespace boost::spirit::ascii
;
54 std::string
str("abc");
55 BOOST_TEST(test("abc", lit(str
)));
56 BOOST_TEST(!test("abcd", lit(str
)));
58 BOOST_TEST(test("abc", string(str
)));
59 BOOST_TEST(!test("abcd", string(str
)));
61 BOOST_TEST(test("abc", string
, str
));
62 BOOST_TEST(!test("abcd", string
, str
));
64 BOOST_TEST(test("abc", str
));
65 BOOST_TEST(!test("abcd", str
));
69 using namespace boost::spirit::standard_wide
;
71 std::basic_string
<wchar_t> wstr(L
"abc");
72 BOOST_TEST(test(L
"abc", lit(wstr
)));
73 BOOST_TEST(!test(L
"abcd", lit(wstr
)));
75 BOOST_TEST(test(L
"abc", string
, wstr
));
76 BOOST_TEST(!test(L
"abcd", string
, wstr
));
78 BOOST_TEST(test(L
"abc", wstr
));
79 BOOST_TEST(!test(L
"abcd", wstr
));
83 using namespace boost::spirit::ascii
;
85 BOOST_TEST(test(L
"a", lit(L
'a')));
86 BOOST_TEST(!test(L
"a", lit(L
'b')));
88 BOOST_TEST(test(L
"abc", L
"abc"));
89 BOOST_TEST(test(L
"abc", "abc"));
90 BOOST_TEST(!test(L
"abcd", L
"abc"));
92 BOOST_TEST(test(L
"abc", lit(L
"abc")));
93 BOOST_TEST(!test(L
"abcd", lit(L
"abc")));
95 BOOST_TEST(test(L
"abc", string(L
"abc")));
96 BOOST_TEST(!test(L
"abcd", string(L
"abc")));
98 BOOST_TEST(test(L
"abc", string
, L
"abc"));
99 BOOST_TEST(!test(L
"abcd", string
, L
"abc"));
101 BOOST_TEST(test(L
"abc", string
, "abc"));
102 BOOST_TEST(!test(L
"abcd", string
, "abc"));
106 using namespace boost::spirit::karma
;
108 const char test_data
[] = "abc\x00s";
109 const std::string
str(test_data
, sizeof(test_data
) - 1);
111 BOOST_TEST(test(str
, lit(str
)));
112 BOOST_TEST(!test("abc", lit(str
)));
114 BOOST_TEST(test(str
, string(str
)));
115 BOOST_TEST(!test("abc", string(str
)));
117 BOOST_TEST(test(str
, string
, str
));
118 BOOST_TEST(!test("abc", string
, str
));
120 BOOST_TEST(test(str
, str
));
121 BOOST_TEST(!test("abc", str
));
125 using namespace boost::spirit::ascii
;
127 BOOST_TEST(test_delimited("a ", lit('a'), ' '));
128 BOOST_TEST(!test_delimited("a ", lit('b'), ' '));
130 BOOST_TEST(test_delimited("abc ", "abc", ' '));
131 BOOST_TEST(!test_delimited("abcd ", "abc", ' '));
133 BOOST_TEST(test_delimited("abc ", lit("abc"), ' '));
134 BOOST_TEST(!test_delimited("abcd ", lit("abc"), ' '));
136 BOOST_TEST(test_delimited("abc ", string
, "abc", ' '));
137 BOOST_TEST(!test_delimited("abcd ", string
, "abc", ' '));
139 BOOST_TEST(test_delimited("abc ", string("abc"), ' '));
140 BOOST_TEST(!test_delimited("abcd ", string("abc"), ' '));
142 BOOST_TEST(test_delimited("abc ", string("abc"), "abc", ' '));
143 BOOST_TEST(!test_delimited("", string("abc"), "abcd", ' '));
144 BOOST_TEST(!test_delimited("", string("abcd"), "abc", ' '));
145 BOOST_TEST(!test_delimited("", string("abc"), "abcd", ' ')); // don't match prefixes only
149 using namespace boost::spirit::ascii
;
151 BOOST_TEST(test_delimited(L
"a ", lit(L
'a'), ' '));
152 BOOST_TEST(!test_delimited(L
"a ", lit(L
'b'), ' '));
154 BOOST_TEST(test_delimited(L
"abc ", L
"abc", ' '));
155 BOOST_TEST(!test_delimited(L
"abcd ", L
"abc", ' '));
157 BOOST_TEST(test_delimited(L
"abc ", lit(L
"abc"), ' '));
158 BOOST_TEST(!test_delimited(L
"abcd ", lit(L
"abc"), ' '));
160 BOOST_TEST(test_delimited(L
"abc ", string
, L
"abc", ' '));
161 BOOST_TEST(!test_delimited(L
"abcd ", string
, L
"abc", ' '));
163 BOOST_TEST(test_delimited(L
"abc ", string(L
"abc"), ' '));
164 BOOST_TEST(!test_delimited(L
"abcd ", string(L
"abc"), ' '));
168 namespace phx
= boost::phoenix
;
169 using namespace boost::spirit::ascii
;
171 std::string
str("abc");
172 BOOST_TEST(test("abc", string
[_1
= phx::ref(str
)]));
173 BOOST_TEST(test_delimited("abc ", string
[_1
= phx::ref(str
)], space
));
177 namespace phx
= boost::phoenix
;
178 using namespace boost::spirit::ascii
;
180 std::basic_string
<char> s("abc");
181 BOOST_TEST((test("abc", lit(phx::val(s
)))));
182 BOOST_TEST((test("abc", string(phx::val(s
)))));
184 BOOST_TEST(test("abc", string(phx::val(s
)), "abc"));
185 BOOST_TEST(!test("", string(phx::val(s
)), "abcd"));
186 BOOST_TEST(!test("", string(phx::val(s
)), "abc"));
188 std::basic_string
<wchar_t> ws(L
"abc");
189 BOOST_TEST((test(L
"abc", lit(phx::ref(ws
)))));
190 BOOST_TEST((test(L
"abc", string(phx::ref(ws
)))));
193 return boost::report_errors();