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_string.hpp>
11 #include <boost/spirit/include/karma_numeric.hpp>
12 #include <boost/spirit/include/karma_generate.hpp>
13 #include <boost/spirit/include/karma_directive.hpp>
14 
15 #include "test.hpp"
16 
17 ///////////////////////////////////////////////////////////////////////////////
18 int
main()19 main()
20 {
21     using namespace spirit_test;
22     using namespace boost::spirit;
23     using namespace boost::spirit::ascii;
24 
25     {
26         BOOST_TEST(test("x         *****", left_align(15, '*')[left_align[char_('x')]]));
27         BOOST_TEST(test("     x    *****", left_align(15, '*')[center[char_('x')]]));
28         BOOST_TEST(test("         x*****", left_align(15, '*')[right_align[char_('x')]]));
29 
30         BOOST_TEST(test("*****x         ", right_align(15, '*')[left_align[char_('x')]]));
31         BOOST_TEST(test("*****     x    ", right_align(15, '*')[center[char_('x')]]));
32         BOOST_TEST(test("*****         x", right_align(15, '*')[right_align[char_('x')]]));
33 
34         BOOST_TEST(test("***x         **", center(15, '*')[left_align[char_('x')]]));
35         BOOST_TEST(test("***     x    **", center(15, '*')[center[char_('x')]]));
36         BOOST_TEST(test("***         x**", center(15, '*')[right_align[char_('x')]]));
37 
38         BOOST_TEST(test("ab        *****", left_align(15, '*')[left_align[lit("ab")]]));
39         BOOST_TEST(test("    ab    *****", left_align(15, '*')[center[lit("ab")]]));
40         BOOST_TEST(test("        ab*****", left_align(15, '*')[right_align[lit("ab")]]));
41 
42         BOOST_TEST(test("*****ab        ", right_align(15, '*')[left_align[lit("ab")]]));
43         BOOST_TEST(test("*****    ab    ", right_align(15, '*')[center[lit("ab")]]));
44         BOOST_TEST(test("*****        ab", right_align(15, '*')[right_align[lit("ab")]]));
45 
46         BOOST_TEST(test("***ab        **", center(15, '*')[left_align[lit("ab")]]));
47         BOOST_TEST(test("***    ab    **", center(15, '*')[center[lit("ab")]]));
48         BOOST_TEST(test("***        ab**", center(15, '*')[right_align[lit("ab")]]));
49     }
50 
51     {
52         BOOST_TEST(test("x         ******", left_align(16, '*')[left_align[char_('x')]]));
53         BOOST_TEST(test("     x    ******", left_align(16, '*')[center[char_('x')]]));
54         BOOST_TEST(test("         x******", left_align(16, '*')[right_align[char_('x')]]));
55 
56         BOOST_TEST(test("******x         ", right_align(16, '*')[left_align[char_('x')]]));
57         BOOST_TEST(test("******     x    ", right_align(16, '*')[center[char_('x')]]));
58         BOOST_TEST(test("******         x", right_align(16, '*')[right_align[char_('x')]]));
59 
60         BOOST_TEST(test("***x         ***", center(16, '*')[left_align[char_('x')]]));
61         BOOST_TEST(test("***     x    ***", center(16, '*')[center[char_('x')]]));
62         BOOST_TEST(test("***         x***", center(16, '*')[right_align[char_('x')]]));
63 
64         BOOST_TEST(test("ab        ******", left_align(16, '*')[left_align[lit("ab")]]));
65         BOOST_TEST(test("    ab    ******", left_align(16, '*')[center[lit("ab")]]));
66         BOOST_TEST(test("        ab******", left_align(16, '*')[right_align[lit("ab")]]));
67 
68         BOOST_TEST(test("******ab        ", right_align(16, '*')[left_align[lit("ab")]]));
69         BOOST_TEST(test("******    ab    ", right_align(16, '*')[center[lit("ab")]]));
70         BOOST_TEST(test("******        ab", right_align(16, '*')[right_align[lit("ab")]]));
71 
72         BOOST_TEST(test("***ab        ***", center(16, '*')[left_align[lit("ab")]]));
73         BOOST_TEST(test("***    ab    ***", center(16, '*')[center[lit("ab")]]));
74         BOOST_TEST(test("***        ab***", center(16, '*')[right_align[lit("ab")]]));
75     }
76 
77     {
78         BOOST_TEST(test("x          ****", left_align(15, '*')[left_align(11)[char_('x')]]));
79         BOOST_TEST(test("     x     ****", left_align(15, '*')[center(11)[char_('x')]]));
80         BOOST_TEST(test("          x****", left_align(15, '*')[right_align(11)[char_('x')]]));
81 
82         BOOST_TEST(test("****x          ", right_align(15, '*')[left_align(11)[char_('x')]]));
83         BOOST_TEST(test("****     x     ", right_align(15, '*')[center(11)[char_('x')]]));
84         BOOST_TEST(test("****          x", right_align(15, '*')[right_align(11)[char_('x')]]));
85 
86         BOOST_TEST(test("**x          **", center(15, '*')[left_align(11)[char_('x')]]));
87         BOOST_TEST(test("**     x     **", center(15, '*')[center(11)[char_('x')]]));
88         BOOST_TEST(test("**          x**", center(15, '*')[right_align(11)[char_('x')]]));
89 
90         BOOST_TEST(test("ab         ****", left_align(15, '*')[left_align(11)[lit("ab")]]));
91         BOOST_TEST(test("     ab    ****", left_align(15, '*')[center(11)[lit("ab")]]));
92         BOOST_TEST(test("         ab****", left_align(15, '*')[right_align(11)[lit("ab")]]));
93 
94         BOOST_TEST(test("****ab         ", right_align(15, '*')[left_align(11)[lit("ab")]]));
95         BOOST_TEST(test("****     ab    ", right_align(15, '*')[center(11)[lit("ab")]]));
96         BOOST_TEST(test("****         ab", right_align(15, '*')[right_align(11)[lit("ab")]]));
97 
98         BOOST_TEST(test("**ab         **", center(15, '*')[left_align(11)[lit("ab")]]));
99         BOOST_TEST(test("**     ab    **", center(15, '*')[center(11)[lit("ab")]]));
100         BOOST_TEST(test("**         ab**", center(15, '*')[right_align(11)[lit("ab")]]));
101     }
102 
103     {
104         BOOST_TEST(test("x          *****", left_align(16, '*')[left_align(11)[char_('x')]]));
105         BOOST_TEST(test("     x     *****", left_align(16, '*')[center(11)[char_('x')]]));
106         BOOST_TEST(test("          x*****", left_align(16, '*')[right_align(11)[char_('x')]]));
107 
108         BOOST_TEST(test("*****x          ", right_align(16, '*')[left_align(11)[char_('x')]]));
109         BOOST_TEST(test("*****     x     ", right_align(16, '*')[center(11)[char_('x')]]));
110         BOOST_TEST(test("*****          x", right_align(16, '*')[right_align(11)[char_('x')]]));
111 
112         BOOST_TEST(test("***x          **", center(16, '*')[left_align(11)[char_('x')]]));
113         BOOST_TEST(test("***     x     **", center(16, '*')[center(11)[char_('x')]]));
114         BOOST_TEST(test("***          x**", center(16, '*')[right_align(11)[char_('x')]]));
115 
116         BOOST_TEST(test("ab         *****", left_align(16, '*')[left_align(11)[lit("ab")]]));
117         BOOST_TEST(test("     ab    *****", left_align(16, '*')[center(11)[lit("ab")]]));
118         BOOST_TEST(test("         ab*****", left_align(16, '*')[right_align(11)[lit("ab")]]));
119 
120         BOOST_TEST(test("*****ab         ", right_align(16, '*')[left_align(11)[lit("ab")]]));
121         BOOST_TEST(test("*****     ab    ", right_align(16, '*')[center(11)[lit("ab")]]));
122         BOOST_TEST(test("*****         ab", right_align(16, '*')[right_align(11)[lit("ab")]]));
123 
124         BOOST_TEST(test("***ab         **", center(16, '*')[left_align(11)[lit("ab")]]));
125         BOOST_TEST(test("***     ab    **", center(16, '*')[center(11)[lit("ab")]]));
126         BOOST_TEST(test("***         ab**", center(16, '*')[right_align(11)[lit("ab")]]));
127     }
128 
129     return boost::report_errors();
130 }
131