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_columns.hpp>
7
8#include <boost/spirit/include/karma_char.hpp>
9#include <boost/spirit/include/karma_generate.hpp>
10#include <boost/spirit/include/karma_numeric.hpp>
11#include <boost/spirit/include/karma_directive.hpp>
12
13#include <boost/spirit/include/karma_nonterminal.hpp>
14#include <boost/spirit/include/karma_action.hpp>
15
16#include <boost/phoenix/core.hpp>
17
18#include "test.hpp"
19
20using namespace spirit_test;
21namespace karma = boost::spirit::karma;
22
23///////////////////////////////////////////////////////////////////////////////
24int
25main()
26{
27 {
28 using karma::columns;
29 using karma::int_;
30
31 std::vector<int> v;
32 for (int i = 0; i < 11; ++i)
33 v.push_back(x: i);
34
35 BOOST_TEST(test("01234\n56789\n10\n", columns[*int_], v));
36 BOOST_TEST(test_delimited("0 1 2 3 4 \n5 6 7 8 9 \n10 \n", columns[*int_]
37 , v, karma::space));
38 }
39
40 {
41 using karma::columns;
42 using karma::int_;
43
44 std::vector<int> v;
45 for (int i = 0; i < 11; ++i)
46 v.push_back(x: i);
47
48 BOOST_TEST(test("012\n345\n678\n910\n", columns(3)[*int_], v));
49 BOOST_TEST(test_delimited("0 1 2 \n3 4 5 \n6 7 8 \n9 10 \n"
50 , columns(3)[*int_], v, karma::space));
51 }
52
53 {
54 using karma::columns;
55 using karma::int_;
56 using boost::phoenix::ref;
57
58 std::vector<int> v;
59 for (int i = 0; i < 11; ++i)
60 v.push_back(x: i);
61
62 int count = 3;
63 BOOST_TEST(test("012\n345\n678\n910\n", columns(ref(count))[*int_], v));
64 BOOST_TEST(test_delimited("0 1 2 \n3 4 5 \n6 7 8 \n9 10 \n"
65 , columns(val(ref(count)))[*int_], v, karma::space));
66 }
67
68 {
69 using karma::columns;
70 using karma::int_;
71 using karma::lit;
72
73 std::vector<int> v;
74 for (int i = 0; i < 11; ++i)
75 v.push_back(x: i);
76
77 BOOST_TEST(test("01234\t56789\t10\t", columns(lit('\t'))[*int_], v));
78 BOOST_TEST(test_delimited("0 1 2 3 4 \t5 6 7 8 9 \t10 \t"
79 , columns(lit('\t'))[*int_], v, karma::space));
80 }
81
82 {
83 using karma::columns;
84 using karma::int_;
85 using karma::lit;
86
87 std::vector<int> v;
88 for (int i = 0; i < 11; ++i)
89 v.push_back(x: i);
90
91 BOOST_TEST(test("012\t345\t678\t910\t", columns(3, lit('\t'))[*int_], v));
92 BOOST_TEST(test_delimited("0 1 2 \t3 4 5 \t6 7 8 \t9 10 \t"
93 , columns(3, lit('\t'))[*int_], v, karma::space));
94 }
95 return boost::report_errors();
96}
97

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