1 /*=============================================================================
2 Copyright (c) 2001-2011 Joel de Guzman
3 http://spirit.sourceforge.net/
4
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 =============================================================================*/
8 #include <boost/detail/lightweight_test.hpp>
9 #include <boost/detail/workaround.hpp>
10 #include <boost/spirit/include/qi_string.hpp>
11 #include <boost/spirit/include/qi_char.hpp>
12 #include <boost/spirit/include/qi_action.hpp>
13 #include <boost/spirit/include/phoenix_core.hpp>
14 #include <boost/spirit/include/phoenix_operator.hpp>
15
16 #include <iostream>
17 #include "test.hpp"
18
19 int
main()20 main()
21 {
22 using spirit_test::test;
23 using spirit_test::test_attr;
24 using boost::spirit::qi::string;
25 using boost::spirit::qi::_1;
26
27 {
28 BOOST_TEST((test("kimpo", "kimpo")));
29 BOOST_TEST((test("kimpo", string("kimpo"))));
30
31 BOOST_TEST((test("x", string("x"))));
32 BOOST_TEST((test(L"x", string(L"x"))));
33
34 std::basic_string<char> s("kimpo");
35 std::basic_string<wchar_t> ws(L"kimpo");
36 BOOST_TEST((test("kimpo", s)));
37 BOOST_TEST((test(L"kimpo", ws)));
38 BOOST_TEST((test("kimpo", string(s))));
39 BOOST_TEST((test(L"kimpo", string(ws))));
40 }
41
42 {
43 BOOST_TEST((test(L"kimpo", L"kimpo")));
44 BOOST_TEST((test(L"kimpo", string(L"kimpo"))));
45 BOOST_TEST((test(L"x", string(L"x"))));
46 }
47
48 {
49 std::basic_string<char> s("kimpo");
50 BOOST_TEST((test("kimpo", string(s))));
51
52 std::basic_string<wchar_t> ws(L"kimpo");
53 BOOST_TEST((test(L"kimpo", string(ws))));
54 }
55
56 {
57 using namespace boost::spirit::ascii;
58 BOOST_TEST((test(" kimpo", string("kimpo"), space)));
59 BOOST_TEST((test(L" kimpo", string(L"kimpo"), space)));
60 BOOST_TEST((test(" x", string("x"), space)));
61 }
62
63 {
64 using namespace boost::spirit::ascii;
65 BOOST_TEST((test(" kimpo", string("kimpo"), space)));
66 BOOST_TEST((test(L" kimpo", string(L"kimpo"), space)));
67 BOOST_TEST((test(" x", string("x"), space)));
68 }
69
70 {
71 using namespace boost::spirit::ascii;
72 std::string s;
73 BOOST_TEST((test_attr("kimpo", string("kimpo"), s)));
74 BOOST_TEST(s == "kimpo");
75 s.clear();
76 BOOST_TEST((test_attr(L"kimpo", string(L"kimpo"), s)));
77 BOOST_TEST(s == "kimpo");
78 s.clear();
79 BOOST_TEST((test_attr("x", string("x"), s)));
80 BOOST_TEST(s == "x");
81 }
82
83 { // lazy string
84
85 using namespace boost::spirit::ascii;
86 namespace phx = boost::phoenix;
87
88 BOOST_TEST((test("x", string(phx::val("x")))));
89
90 std::string str; // make sure lazy lits have an attribute
91 BOOST_TEST(test("x", string(phx::val("x"))[phx::ref(str) = _1]));
92 BOOST_TEST(str == "x");
93 }
94
95 return boost::report_errors();
96 }
97