• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //  Copyright (c) 2001-2010 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 #include <boost/detail/workaround.hpp>
9 
10 #include <boost/spirit/include/karma_char.hpp>
11 #include <boost/spirit/include/karma_string.hpp>
12 #include <boost/spirit/include/karma_generate.hpp>
13 #include <boost/spirit/include/karma_directive.hpp>
14 
15 #include <boost/phoenix/core/value.hpp>
16 
17 #include "test.hpp"
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::standard_wide;
29 
30         BOOST_TEST(test(L"x", lower[L'X']));
31         BOOST_TEST(test(L"x", lower[L'x']));
32 
33         BOOST_TEST(test(L"x", lower[char_], L'X'));
34         BOOST_TEST(test(L"x", lower[char_], L'x'));
35         BOOST_TEST(test(L"x", lower[char_(L'X')]));
36         BOOST_TEST(test(L"x", lower[char_(L'x')]));
37 
38         BOOST_TEST(test(L" ", lower[space]));
39         BOOST_TEST(test(L"\t", lower[space], L'\t'));
40 
41         BOOST_TEST(test(L"x", lower[lower[L'X']]));
42         BOOST_TEST(test(L"x", lower[lower[L'x']]));
43 
44         BOOST_TEST(test(L"x", lower[lower[char_]], L'X'));
45         BOOST_TEST(test(L"x", lower[lower[char_]], L'x'));
46         BOOST_TEST(test(L"x", lower[lower[char_(L'X')]]));
47         BOOST_TEST(test(L"x", lower[lower[char_(L'x')]]));
48 
49         BOOST_TEST(test(L" ", lower[lower[space]]));
50         BOOST_TEST(test(L"\t", lower[lower[space]], L'\t'));
51 
52         BOOST_TEST(test(L"X", upper[lower[L'X']]));
53         BOOST_TEST(test(L"X", upper[lower[L'x']]));
54 
55         BOOST_TEST(test(L"X", upper[lower[char_]], L'X'));
56         BOOST_TEST(test(L"X", upper[lower[char_]], L'x'));
57         BOOST_TEST(test(L"X", upper[lower[char_(L'X')]]));
58         BOOST_TEST(test(L"X", upper[lower[char_(L'x')]]));
59 
60         BOOST_TEST(test(L" ", upper[lower[space]]));
61         BOOST_TEST(test(L"\t", upper[lower[space]], L'\t'));
62 
63         BOOST_TEST(test(L"X", upper[L'X']));
64         BOOST_TEST(test(L"X", upper[L'x']));
65 
66         BOOST_TEST(test(L"X", upper[char_], L'X'));
67         BOOST_TEST(test(L"X", upper[char_], L'x'));
68         BOOST_TEST(test(L"X", upper[char_(L'X')]));
69         BOOST_TEST(test(L"X", upper[char_(L'x')]));
70 
71         BOOST_TEST(test(L" ", upper[space]));
72         BOOST_TEST(test(L"\t", upper[space], L'\t'));
73 
74         BOOST_TEST(test(L"x", lower[upper[L'X']]));
75         BOOST_TEST(test(L"x", lower[upper[L'x']]));
76 
77         BOOST_TEST(test(L"x", lower[upper[char_]], L'X'));
78         BOOST_TEST(test(L"x", lower[upper[char_]], L'x'));
79         BOOST_TEST(test(L"x", lower[upper[char_(L'X')]]));
80         BOOST_TEST(test(L"x", lower[upper[char_(L'x')]]));
81 
82         BOOST_TEST(test(L" ", lower[upper[space]]));
83         BOOST_TEST(test(L"\t", lower[upper[space]], L'\t'));
84 
85         BOOST_TEST(test(L"X", upper[upper[L'X']]));
86         BOOST_TEST(test(L"X", upper[upper[L'x']]));
87 
88         BOOST_TEST(test(L"X", upper[upper[char_]], L'X'));
89         BOOST_TEST(test(L"X", upper[upper[char_]], L'x'));
90         BOOST_TEST(test(L"X", upper[upper[char_(L'X')]]));
91         BOOST_TEST(test(L"X", upper[upper[char_(L'x')]]));
92 
93         BOOST_TEST(test(L" ", upper[upper[space]]));
94         BOOST_TEST(test(L"\t", upper[upper[space]], L'\t'));
95     }
96 
97     { // test extended ASCII characters
98         using namespace boost::spirit::iso8859_1;
99 
100         BOOST_TEST(test("\xE4\xE4", lower["\xC4\xE4"]));
101         BOOST_TEST(test("\xE4\xE4", lower["\xC4\xE4"]));
102 
103         BOOST_TEST(test("\xC4\xC4", upper["\xC4\xE4"]));
104         BOOST_TEST(test("\xC4\xC4", upper["\xC4\xE4"]));
105     }
106 
107     {
108         using namespace boost::spirit::ascii;
109         using boost::phoenix::val;
110 
111         BOOST_TEST(test("x", lower[val('X')]));
112         BOOST_TEST(test("x", lower[val('x')]));
113     }
114 
115     return boost::report_errors();
116 }
117