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

source code of boost/libs/spirit/test/karma/generate_attr.cpp