]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/spirit/test/karma/delimiter.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / spirit / test / karma / delimiter.cpp
CommitLineData
7c673cae
FG
1// Copyright (c) 2001-2011 Hartmut Kaiser
2//
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)
5
1e59de90 6#include <boost/spirit/include/karma_delimit.hpp>
7c673cae
FG
7
8#include <boost/spirit/include/karma_char.hpp>
9#include <boost/spirit/include/karma_generate.hpp>
10#include <boost/spirit/include/karma_directive.hpp>
11#include <boost/spirit/include/karma_operator.hpp>
12#include <boost/spirit/include/karma_nonterminal.hpp>
13#include <boost/spirit/include/karma_string.hpp>
14
15#include "test.hpp"
16
17using namespace spirit_test;
18
19///////////////////////////////////////////////////////////////////////////////
20int
21main()
22{
23 using namespace boost::spirit;
24 using namespace boost::spirit::ascii;
25
26 {
27 BOOST_TEST(test("a b ", delimit[char_('a') << 'b']));
28 BOOST_TEST(test("a*b*", delimit('*')[char_('a') << 'b']));
29
30 BOOST_TEST(test("ab c d",
31 char_('a') << delimit[char_('b') << 'c'] << 'd'));
32 BOOST_TEST(test("ab*c*d",
33 char_('a') << delimit('*')[char_('b') << 'c'] << 'd'));
34
35 BOOST_TEST(test_delimited("a b ", delimit[char_('a') << 'b'], char_(' ')));
36 BOOST_TEST(test_delimited("a*b*", delimit('*')[char_('a') << 'b'], char_(' ')));
37
38 BOOST_TEST(test_delimited("a b c d ",
39 char_('a') << delimit[char_('b') << 'c'] << 'd', char_(' ')));
40 BOOST_TEST(test_delimited("a b*c*d ",
41 char_('a') << delimit('*')[char_('b') << 'c'] << 'd', char_(' ')));
42 }
43
44 {
45 BOOST_TEST(test("ab", verbatim[char_('a') << 'b']));
46 BOOST_TEST(test("abcd",
47 char_('a') << verbatim[char_('b') << 'c'] << 'd'));
48
49 BOOST_TEST(test_delimited("ab ",
50 verbatim[char_('a') << 'b'], char_(' ')));
51 BOOST_TEST(test_delimited("a bc d ",
52 char_('a') << verbatim[char_('b') << 'c'] << 'd', char_(' ')));
53 }
54
55 {
56 BOOST_TEST(test("ab", no_delimit[char_('a') << 'b']));
57 BOOST_TEST(test("abcd",
58 char_('a') << no_delimit[char_('b') << 'c'] << 'd'));
59
60 BOOST_TEST(test_delimited("ab",
61 no_delimit[char_('a') << 'b'], char_(' ')));
62 BOOST_TEST(test_delimited("a bcd ",
63 char_('a') << no_delimit[char_('b') << 'c'] << 'd', char_(' ')));
64 }
65
66 {
67 // The doubled delimiters at the end are generated by the 'b' generator
68 // and the verbatim[] directive. Currently, there is no easy way to
69 // avoid this.
70 BOOST_TEST(test("a b ", delimit[verbatim[delimit[char_('a') << 'b']]]));
71 BOOST_TEST(test_delimited("a*b**",
72 verbatim[delimit[char_('a') << 'b']], char_('*')));
73 }
74
75 {
76 karma::rule<output_iterator<char>::type, BOOST_TYPEOF(", ")> r = "abc";
77 BOOST_TEST(test("abc, ", delimit(", ")[r]));
78 }
79
80 return boost::report_errors();
81}
82