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