]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/spirit/classic/test/primitives_tests.cpp
1 /*=============================================================================
2 Copyright (c) 1998-2003 Joel de Guzman
3 Copyright (c) 2002-2003 Martin Wille
4 http://spirit.sourceforge.net/
6 Use, modification and distribution is subject to the Boost Software
7 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
8 http://www.boost.org/LICENSE_1_0.txt)
9 =============================================================================*/
12 #include <boost/spirit/include/classic_core.hpp>
13 #include <boost/detail/lightweight_test.hpp>
14 #include "impl/string_length.hpp"
15 using namespace BOOST_SPIRIT_CLASSIC_NS
;
17 ///////////////////////////////////////////////////////////////////////////////
21 ///////////////////////////////////////////////////////////////////////////////
25 char const* cp
= "xyz.Jambalaya";
26 char const* cp_first
= cp
;
27 char const* cp_last
= cp
+ test_impl::string_length(cp
);
30 parse_info
<char const*> pi
= parse(cp_first
, cp_last
, cpx
);
33 BOOST_TEST(pi
.length
== 1);
34 BOOST_TEST(pi
.stop
== &cp
[1]);
36 pi
= parse(pi
.stop
, ch_p('y'));
39 BOOST_TEST(pi
.length
== 1);
40 BOOST_TEST(pi
.stop
== &cp
[2]);
42 scanner
<char const*> scan(pi
.stop
, cp_last
);
43 match
<char> hit
= ch_p('z').parse(scan
);
45 BOOST_TEST(hit
.value() == 'z');
46 BOOST_TEST(pi
.stop
== &cp
[3]);
48 pi
= parse(pi
.stop
, eps_p
);
51 BOOST_TEST(pi
.length
== 0);
52 BOOST_TEST(pi
.stop
== &cp
[3]);
54 pi
= parse(pi
.stop
, nothing_p
);
57 BOOST_TEST(pi
.stop
== &cp
[3]);
59 pi
= parse(pi
.stop
, anychar_p
);
62 BOOST_TEST(pi
.length
== 1);
63 BOOST_TEST(pi
.stop
== &cp
[4]);
66 hit
= range_p('A','Z').parse(scan
);
68 BOOST_TEST(hit
.value() == 'J');
69 BOOST_TEST(pi
.stop
== &cp
[5]);
71 strlit
<char const*> sp("ambalaya");
72 strlit
<wchar_t const*> wsp(L
"ambalaya");
74 char const* save
= pi
.stop
;
78 BOOST_TEST(pi
.length
== 8);
79 BOOST_TEST(pi
.stop
== cp_last
);
81 pi
= parse(save
, wsp
);
84 BOOST_TEST(pi
.length
== 8);
85 BOOST_TEST(pi
.stop
== cp_last
);
87 pi
= parse("\n", eol_p
);
91 pi
= parse("\r", eol_p
);
95 pi
= parse("\r\n", eol_p
);
99 pi
= parse("\n\r", eol_p
);
101 BOOST_TEST(!pi
.full
);
103 pi
= parse("", end_p
);
107 pi
= parse("1", ~alpha_p
);
111 pi
= parse("a", ~alpha_p
);
114 pi
= parse("a", ~~alpha_p
);
118 pi
= parse("1", ~~alpha_p
);
122 ///////////////////////////////////////////////////////////////////////////////
126 ///////////////////////////////////////////////////////////////////////////////
131 if (boost::report_errors() == 0)
132 std::cout
<< "Tests concluded successfully\n";
133 return boost::report_errors();