• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/config/warning_disable.hpp>
7 #include <boost/detail/lightweight_test.hpp>
8 
9 #include <boost/spirit/include/karma_char.hpp>
10 #include <boost/spirit/include/karma_operator.hpp>
11 #include <boost/spirit/include/karma_generate_attr.hpp>
12 
13 #include "test_attr.hpp"
14 
15 #if SPIRIT_ARGUMENTS_LIMIT < 10
16 # error SPIRIT_ARGUMENTS_LIMIT must be at least 10 to run the test
17 #endif
18 
19 using namespace spirit_test;
20 
21 ///////////////////////////////////////////////////////////////////////////////
22 int
main()23 main()
24 {
25     using namespace boost::spirit;
26 
27     {
28         using namespace boost::spirit::ascii;
29 
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'));
54     }
55 
56     {
57         using namespace boost::spirit::ascii;
58 
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'));
85     }
86 
87     {
88         using namespace boost::spirit::ascii;
89         using boost::spirit::karma::delimit_flag;
90 
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
95           , '1', '2'));
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'));
125     }
126 
127     {
128         using namespace boost::spirit::ascii;
129         using boost::spirit::karma::delimit_flag;
130 
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
135           , '1', '2'));
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'));
165     }
166 
167     return boost::report_errors();
168 }
169 
170