]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/spirit/classic/test/primitives_tests.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / spirit / classic / test / primitives_tests.cpp
CommitLineData
7c673cae
FG
1/*=============================================================================
2 Copyright (c) 1998-2003 Joel de Guzman
3 Copyright (c) 2002-2003 Martin Wille
4 http://spirit.sourceforge.net/
5
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=============================================================================*/
10#include <iostream>
11
12#include <boost/spirit/include/classic_core.hpp>
1e59de90 13
7c673cae 14#include "impl/string_length.hpp"
1e59de90
TL
15
16#include <boost/core/lightweight_test.hpp>
17
7c673cae
FG
18using namespace BOOST_SPIRIT_CLASSIC_NS;
19
20///////////////////////////////////////////////////////////////////////////////
21//
22// Primitives tests
23//
24///////////////////////////////////////////////////////////////////////////////
25void
26primitives_tests()
27{
28 char const* cp = "xyz.Jambalaya";
29 char const* cp_first = cp;
30 char const* cp_last = cp + test_impl::string_length(cp);
31
32 chlit<> cpx('x');
33 parse_info<char const*> pi = parse(cp_first, cp_last, cpx);
34 BOOST_TEST(pi.hit);
35 BOOST_TEST(!pi.full);
36 BOOST_TEST(pi.length == 1);
37 BOOST_TEST(pi.stop == &cp[1]);
38
39 pi = parse(pi.stop, ch_p('y'));
40 BOOST_TEST(pi.hit);
41 BOOST_TEST(!pi.full);
42 BOOST_TEST(pi.length == 1);
43 BOOST_TEST(pi.stop == &cp[2]);
44
45 scanner<char const*> scan(pi.stop, cp_last);
46 match<char> hit = ch_p('z').parse(scan);
47 BOOST_TEST(hit);
48 BOOST_TEST(hit.value() == 'z');
49 BOOST_TEST(pi.stop == &cp[3]);
50
51 pi = parse(pi.stop, eps_p);
52 BOOST_TEST(pi.hit);
53 BOOST_TEST(!pi.full);
54 BOOST_TEST(pi.length == 0);
55 BOOST_TEST(pi.stop == &cp[3]);
56
57 pi = parse(pi.stop, nothing_p);
58 BOOST_TEST(!pi.hit);
59 BOOST_TEST(!pi.full);
60 BOOST_TEST(pi.stop == &cp[3]);
61
62 pi = parse(pi.stop, anychar_p);
63 BOOST_TEST(pi.hit);
64 BOOST_TEST(!pi.full);
65 BOOST_TEST(pi.length == 1);
66 BOOST_TEST(pi.stop == &cp[4]);
67
68 scan.first = pi.stop;
69 hit = range_p('A','Z').parse(scan);
70 BOOST_TEST(hit);
71 BOOST_TEST(hit.value() == 'J');
72 BOOST_TEST(pi.stop == &cp[5]);
73
74 strlit<char const*> sp("ambalaya");
75 strlit<wchar_t const*> wsp(L"ambalaya");
76
77 char const* save = pi.stop;
78 pi = parse(save, sp);
79 BOOST_TEST(pi.hit);
80 BOOST_TEST(pi.full);
81 BOOST_TEST(pi.length == 8);
82 BOOST_TEST(pi.stop == cp_last);
83
84 pi = parse(save, wsp);
85 BOOST_TEST(pi.hit);
86 BOOST_TEST(pi.full);
87 BOOST_TEST(pi.length == 8);
88 BOOST_TEST(pi.stop == cp_last);
89
90 pi = parse("\n", eol_p);
91 BOOST_TEST(pi.hit);
92 BOOST_TEST(pi.full);
93
94 pi = parse("\r", eol_p);
95 BOOST_TEST(pi.hit);
96 BOOST_TEST(pi.full);
97
98 pi = parse("\r\n", eol_p);
99 BOOST_TEST(pi.hit);
100 BOOST_TEST(pi.full);
101
102 pi = parse("\n\r", eol_p);
103 BOOST_TEST(pi.hit);
104 BOOST_TEST(!pi.full);
105
106 pi = parse("", end_p);
107 BOOST_TEST(pi.hit);
108 BOOST_TEST(pi.full);
109
110 pi = parse("1", ~alpha_p);
111 BOOST_TEST(pi.hit);
112 BOOST_TEST(pi.full);
113
114 pi = parse("a", ~alpha_p);
115 BOOST_TEST(!pi.hit);
116
117 pi = parse("a", ~~alpha_p);
118 BOOST_TEST(pi.hit);
119 BOOST_TEST(pi.full);
120
121 pi = parse("1", ~~alpha_p);
122 BOOST_TEST(!pi.hit);
123}
124
125///////////////////////////////////////////////////////////////////////////////
126//
127// Main
128//
129///////////////////////////////////////////////////////////////////////////////
130int
131main()
132{
133 primitives_tests();
134 if (boost::report_errors() == 0)
135 std::cout << "Tests concluded successfully\n";
136 return boost::report_errors();
137}
138