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
//#define KARMA_FAIL_COMPILATION
8
#define SPIRIT_ARGUMENTS_LIMIT 10
10
#include <boost/config/warning_disable.hpp>
11
#include <boost/detail/lightweight_test.hpp>
13
#include <boost/spirit/include/karma_char.hpp>
14
#include <boost/spirit/include/karma_operator.hpp>
15
#include <boost/spirit/include/karma_generate_attr.hpp>
17
#include "test_attr.hpp"
19
using namespace spirit_test;
21
///////////////////////////////////////////////////////////////////////////////
25
using namespace boost::spirit;
28
using namespace boost::spirit::ascii;
30
BOOST_TEST(test("1", char_, '1'));
31
BOOST_TEST(test("12", char_ << char_, '1', '2'));
32
BOOST_TEST(test("123", char_ << char_ << char_, '1', '2', '3'));
33
BOOST_TEST(test("1234"
34
, char_ << char_ << char_ << char_
35
, '1', '2', '3', '4'));
36
BOOST_TEST(test("12345"
37
, char_ << char_ << char_ << char_ << char_
38
, '1', '2', '3', '4', '5'));
39
BOOST_TEST(test("123456"
40
, char_ << char_ << char_ << char_ << char_ << char_
41
, '1', '2', '3', '4', '5', '6'));
42
BOOST_TEST(test("1234567"
43
, char_ << char_ << char_ << char_ << char_ << char_ << char_
44
, '1', '2', '3', '4', '5', '6', '7'));
45
BOOST_TEST(test("12345678"
46
, char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_
47
, '1', '2', '3', '4', '5', '6', '7', '8'));
48
BOOST_TEST(test("123456789"
49
, char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_
50
, '1', '2', '3', '4', '5', '6', '7', '8', '9'));
51
BOOST_TEST(test("1234567890"
52
, char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_
53
, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'));
57
using namespace boost::spirit::ascii;
59
BOOST_TEST(test_delimited("1 ", char_, space, '1'));
60
BOOST_TEST(test_delimited("1 2 "
61
, char_ << char_, space, '1', '2'));
62
BOOST_TEST(test_delimited("1 2 3 "
63
, char_ << char_ << char_, space, '1', '2', '3'));
64
BOOST_TEST(test_delimited("1 2 3 4 "
65
, char_ << char_ << char_ << char_
66
, space, '1', '2', '3', '4'));
67
BOOST_TEST(test_delimited("1 2 3 4 5 "
68
, char_ << char_ << char_ << char_ << char_
69
, space, '1', '2', '3', '4', '5'));
70
BOOST_TEST(test_delimited("1 2 3 4 5 6 "
71
, char_ << char_ << char_ << char_ << char_ << char_
72
, space, '1', '2', '3', '4', '5', '6'));
73
BOOST_TEST(test_delimited("1 2 3 4 5 6 7 "
74
, char_ << char_ << char_ << char_ << char_ << char_ << char_
75
, space, '1', '2', '3', '4', '5', '6', '7'));
76
BOOST_TEST(test_delimited("1 2 3 4 5 6 7 8 "
77
, char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_
78
, space, '1', '2', '3', '4', '5', '6', '7', '8'));
79
BOOST_TEST(test_delimited("1 2 3 4 5 6 7 8 9 "
80
, char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_
81
, space, '1', '2', '3', '4', '5', '6', '7', '8', '9'));
82
BOOST_TEST(test_delimited("1 2 3 4 5 6 7 8 9 0 "
83
, char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_
84
, space, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'));
88
using namespace boost::spirit::ascii;
89
using boost::spirit::karma::delimit_flag;
91
BOOST_TEST(test_predelimited(" 1 ", char_, space
92
, delimit_flag::predelimit, '1'));
93
BOOST_TEST(test_predelimited(" 1 2 "
94
, char_ << char_, space, delimit_flag::predelimit
96
BOOST_TEST(test_predelimited(" 1 2 3 "
97
, char_ << char_ << char_, space
98
, delimit_flag::predelimit, '1', '2', '3'));
99
BOOST_TEST(test_predelimited(" 1 2 3 4 "
100
, char_ << char_ << char_ << char_
101
, space, delimit_flag::predelimit, '1', '2', '3', '4'));
102
BOOST_TEST(test_predelimited(" 1 2 3 4 5 "
103
, char_ << char_ << char_ << char_ << char_
104
, space, delimit_flag::predelimit, '1', '2', '3', '4', '5'));
105
BOOST_TEST(test_predelimited(" 1 2 3 4 5 6 "
106
, char_ << char_ << char_ << char_ << char_ << char_
107
, space, delimit_flag::predelimit
108
, '1', '2', '3', '4', '5', '6'));
109
BOOST_TEST(test_predelimited(" 1 2 3 4 5 6 7 "
110
, char_ << char_ << char_ << char_ << char_ << char_ << char_
111
, space, delimit_flag::predelimit
112
, '1', '2', '3', '4', '5', '6', '7'));
113
BOOST_TEST(test_predelimited(" 1 2 3 4 5 6 7 8 "
114
, char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_
115
, space, delimit_flag::predelimit
116
, '1', '2', '3', '4', '5', '6', '7', '8'));
117
BOOST_TEST(test_predelimited(" 1 2 3 4 5 6 7 8 9 "
118
, char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_
119
, space, delimit_flag::predelimit
120
, '1', '2', '3', '4', '5', '6', '7', '8', '9'));
121
BOOST_TEST(test_predelimited(" 1 2 3 4 5 6 7 8 9 0 "
122
, char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_
123
, space, delimit_flag::predelimit
124
, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'));
128
using namespace boost::spirit::ascii;
129
using boost::spirit::karma::delimit_flag;
131
BOOST_TEST(test_predelimited("1 ", char_, space
132
, delimit_flag::dont_predelimit, '1'));
133
BOOST_TEST(test_predelimited("1 2 "
134
, char_ << char_, space, delimit_flag::dont_predelimit
136
BOOST_TEST(test_predelimited("1 2 3 "
137
, char_ << char_ << char_, space
138
, delimit_flag::dont_predelimit, '1', '2', '3'));
139
BOOST_TEST(test_predelimited("1 2 3 4 "
140
, char_ << char_ << char_ << char_
141
, space, delimit_flag::dont_predelimit, '1', '2', '3', '4'));
142
BOOST_TEST(test_predelimited("1 2 3 4 5 "
143
, char_ << char_ << char_ << char_ << char_
144
, space, delimit_flag::dont_predelimit, '1', '2', '3', '4', '5'));
145
BOOST_TEST(test_predelimited("1 2 3 4 5 6 "
146
, char_ << char_ << char_ << char_ << char_ << char_
147
, space, delimit_flag::dont_predelimit
148
, '1', '2', '3', '4', '5', '6'));
149
BOOST_TEST(test_predelimited("1 2 3 4 5 6 7 "
150
, char_ << char_ << char_ << char_ << char_ << char_ << char_
151
, space, delimit_flag::dont_predelimit
152
, '1', '2', '3', '4', '5', '6', '7'));
153
BOOST_TEST(test_predelimited("1 2 3 4 5 6 7 8 "
154
, char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_
155
, space, delimit_flag::dont_predelimit
156
, '1', '2', '3', '4', '5', '6', '7', '8'));
157
BOOST_TEST(test_predelimited("1 2 3 4 5 6 7 8 9 "
158
, char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_
159
, space, delimit_flag::dont_predelimit
160
, '1', '2', '3', '4', '5', '6', '7', '8', '9'));
161
BOOST_TEST(test_predelimited("1 2 3 4 5 6 7 8 9 0 "
162
, char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_ << char_
163
, space, delimit_flag::dont_predelimit
164
, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'));
167
return boost::report_errors();