]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/spirit/test/x3/difference.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / spirit / test / x3 / difference.cpp
CommitLineData
7c673cae
FG
1/*=============================================================================
2 Copyright (c) 2001-2015 Joel de Guzman
3
4 Distributed under the Boost Software License, Version 1.0. (See accompanying
5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6=============================================================================*/
7c673cae
FG
7#include <boost/spirit/home/x3.hpp>
8
9#include <string>
10#include <iostream>
11#include "test.hpp"
12
13int
14main()
15{
16 using boost::spirit::x3::ascii::char_;
17 using boost::spirit::x3::ascii::space;
18 using boost::spirit::x3::lit;
19 using spirit_test::test;
20 using spirit_test::test_attr;
21
f67539c2
TL
22 BOOST_SPIRIT_ASSERT_CONSTEXPR_CTORS(char_ - 'a');
23
7c673cae
FG
24 // Basic tests
25 {
26 BOOST_TEST(test("b", char_ - 'a'));
27 BOOST_TEST(!test("a", char_ - 'a'));
28 BOOST_TEST(test("/* abcdefghijk */", "/*" >> *(char_ - "*/") >> "*/"));
29 BOOST_TEST(!test("switch", lit("switch") - "switch"));
30 }
31
32 // Test attributes
33 {
34 char attr;
35 BOOST_TEST(test_attr("xg", (char_ - 'g') >> 'g', attr));
36 BOOST_TEST(attr == 'x');
37 }
38
39 // Test handling of container attributes
40 {
41 std::string attr;
42 BOOST_TEST(test_attr("abcdefg", *(char_ - 'g') >> 'g', attr));
43 BOOST_TEST(attr == "abcdef");
44 }
45
46 {
47 using boost::spirit::x3::_attr;
48
49 std::string s;
50
51 BOOST_TEST(test(
52 "/*abcdefghijk*/"
53 , "/*" >> *(char_ - "*/")[([&](auto& ctx){ s += _attr(ctx); })] >> "*/"
54 ));
55 BOOST_TEST(s == "abcdefghijk");
56 s.clear();
57
58 BOOST_TEST(test(
59 " /*abcdefghijk*/"
60 , "/*" >> *(char_ - "*/")[([&](auto& ctx){ s += _attr(ctx); })] >> "*/"
61 , space
62 ));
63 BOOST_TEST(s == "abcdefghijk");
64 }
65
66 return boost::report_errors();
67}