1 /*=============================================================================
2 Copyright (c) 2001-2015 Joel de Guzman
3 http://spirit.sourceforge.net/
5 Distributed under the Boost Software License, Version 1.0. (See accompanying
6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 =============================================================================*/
9 #include <boost/detail/lightweight_test.hpp>
10 #include <boost/spirit/home/x3.hpp>
18 using spirit_test::test;
19 using spirit_test::test_attr;
20 using boost::spirit::x3::no_case;
23 using namespace boost::spirit::x3::ascii;
24 BOOST_TEST(test("x", no_case[char_]));
25 BOOST_TEST(test("X", no_case[char_('x')]));
26 BOOST_TEST(test("X", no_case[char_('X')]));
27 BOOST_TEST(test("x", no_case[char_('X')]));
28 BOOST_TEST(test("x", no_case[char_('x')]));
29 BOOST_TEST(!test("z", no_case[char_('X')]));
30 BOOST_TEST(!test("z", no_case[char_('x')]));
31 BOOST_TEST(test("x", no_case[char_('a', 'z')]));
32 BOOST_TEST(test("X", no_case[char_('a', 'z')]));
33 BOOST_TEST(!test("a", no_case[char_('b', 'z')]));
34 BOOST_TEST(!test("z", no_case[char_('a', 'y')]));
37 using namespace boost::spirit::x3::ascii;
38 BOOST_TEST(test("X", no_case['x']));
39 BOOST_TEST(test("X", no_case['X']));
40 BOOST_TEST(test("x", no_case['X']));
41 BOOST_TEST(test("x", no_case['x']));
42 BOOST_TEST(!test("z", no_case['X']));
43 BOOST_TEST(!test("z", no_case['x']));
47 using namespace boost::spirit::x3::iso8859_1;
48 BOOST_TEST(test("X", no_case[char_("a-z")]));
49 BOOST_TEST(!test("1", no_case[char_("a-z")]));
52 { // test extended ASCII characters
53 using namespace boost::spirit::x3::iso8859_1;
54 BOOST_TEST(test("\xC1", no_case[char_('\xE1')]));
56 BOOST_TEST(test("\xC9", no_case[char_("\xE5-\xEF")]));
57 BOOST_TEST(!test("\xFF", no_case[char_("\xE5-\xEF")]));
59 BOOST_TEST(test("\xC1\xE1", no_case[lit("\xE1\xC1")]));
60 BOOST_TEST(test("\xE1\xE1", no_case[no_case[lit("\xE1\xC1")]]));
64 using namespace boost::spirit::x3::ascii;
65 BOOST_TEST(test("Bochi Bochi", no_case[lit("bochi bochi")]));
66 BOOST_TEST(test("BOCHI BOCHI", no_case[lit("bochi bochi")]));
67 BOOST_TEST(!test("Vavoo", no_case[lit("bochi bochi")]));
72 using namespace boost::spirit::x3::ascii;
73 BOOST_TEST(test("x", no_case[no_case[char_]]));
74 BOOST_TEST(test("x", no_case[no_case[char_('x')]]));
75 BOOST_TEST(test("yabadabadoo", no_case[no_case[lit("Yabadabadoo")]]));
79 using namespace boost::spirit::x3::ascii;
80 BOOST_TEST(test("X", no_case[alnum]));
81 BOOST_TEST(test("6", no_case[alnum]));
82 BOOST_TEST(!test(":", no_case[alnum]));
84 BOOST_TEST(test("X", no_case[lower]));
85 BOOST_TEST(test("x", no_case[lower]));
86 BOOST_TEST(test("X", no_case[upper]));
87 BOOST_TEST(test("x", no_case[upper]));
88 BOOST_TEST(!test(":", no_case[lower]));
89 BOOST_TEST(!test(":", no_case[upper]));
93 using namespace boost::spirit::x3::iso8859_1;
94 BOOST_TEST(test("X", no_case[alnum]));
95 BOOST_TEST(test("6", no_case[alnum]));
96 BOOST_TEST(!test(":", no_case[alnum]));
98 BOOST_TEST(test("X", no_case[lower]));
99 BOOST_TEST(test("x", no_case[lower]));
100 BOOST_TEST(test("X", no_case[upper]));
101 BOOST_TEST(test("x", no_case[upper]));
102 BOOST_TEST(!test(":", no_case[lower]));
103 BOOST_TEST(!test(":", no_case[upper]));
107 using namespace boost::spirit::x3::standard;
108 BOOST_TEST(test("X", no_case[alnum]));
109 BOOST_TEST(test("6", no_case[alnum]));
110 BOOST_TEST(!test(":", no_case[alnum]));
112 BOOST_TEST(test("X", no_case[lower]));
113 BOOST_TEST(test("x", no_case[lower]));
114 BOOST_TEST(test("X", no_case[upper]));
115 BOOST_TEST(test("x", no_case[upper]));
116 BOOST_TEST(!test(":", no_case[lower]));
117 BOOST_TEST(!test(":", no_case[upper]));
122 namespace standard = boost::spirit::x3::standard;
123 namespace standard_wide = boost::spirit::x3::standard_wide;
125 BOOST_TEST(test("x", no_case[standard::char_("a-z")]));
126 BOOST_TEST(test("X", no_case[standard::char_("a-z")]));
127 BOOST_TEST(test(L"X", no_case[standard_wide::char_(L"a-z")]));
128 BOOST_TEST(test(L"X", no_case[standard_wide::char_(L"X")]));
132 using namespace boost::spirit::x3::standard;
133 std::string s("bochi bochi");
134 BOOST_TEST(test("Bochi Bochi", no_case[lit(s.c_str())]));
135 BOOST_TEST(test("Bochi Bochi", no_case[lit(s)]));
136 BOOST_TEST(test("Bochi Bochi", no_case[s.c_str()]));
137 BOOST_TEST(test("Bochi Bochi", no_case[s]));
142 using namespace boost::spirit::x3::standard;
143 BOOST_TEST(!test("ą", no_case['a']));
147 return boost::report_errors();