| /*============================================================================= |
| Copyright (c) 2001-2010 Joel de Guzman |
| http://spirit.sourceforge.net/ |
| |
| Distributed under the Boost Software License, Version 1.0. (See accompanying |
| file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| =============================================================================*/ |
| #include <boost/detail/lightweight_test.hpp> |
| #include <boost/detail/workaround.hpp> |
| #include <boost/spirit/include/qi_string.hpp> |
| #include <boost/spirit/include/qi_char.hpp> |
| #include <boost/spirit/include/qi_action.hpp> |
| #include <boost/spirit/include/phoenix_core.hpp> |
| #include <boost/spirit/include/phoenix_operator.hpp> |
| |
| #include <iostream> |
| #include "test.hpp" |
| |
| int |
| main() |
| { |
| using spirit_test::test; |
| using spirit_test::test_attr; |
| using boost::spirit::qi::lit; |
| using boost::spirit::qi::_1; |
| |
| { |
| BOOST_TEST((test("kimpo", "kimpo"))); |
| BOOST_TEST((test("kimpo", lit("kimpo")))); |
| #if !BOOST_WORKAROUND(BOOST_MSVC, <= 1400) |
| BOOST_TEST((test("x", lit("x")))); |
| BOOST_TEST((test(L"x", lit(L"x")))); |
| #endif |
| std::basic_string<char> s("kimpo"); |
| std::basic_string<wchar_t> ws(L"kimpo"); |
| BOOST_TEST((test("kimpo", s))); |
| BOOST_TEST((test(L"kimpo", ws))); |
| BOOST_TEST((test("kimpo", lit(s)))); |
| BOOST_TEST((test(L"kimpo", lit(ws)))); |
| } |
| |
| { |
| BOOST_TEST((test(L"kimpo", L"kimpo"))); |
| BOOST_TEST((test(L"kimpo", lit(L"kimpo")))); |
| #if !BOOST_WORKAROUND(BOOST_MSVC, <= 1400) |
| BOOST_TEST((test(L"x", lit(L"x")))); |
| #endif |
| BOOST_TEST((test(L"x", lit(L'x')))); |
| BOOST_TEST((test(L"x", lit(L'x')))); |
| } |
| |
| { |
| std::basic_string<char> s("kimpo"); |
| BOOST_TEST((test("kimpo", lit(s)))); |
| |
| std::basic_string<wchar_t> ws(L"kimpo"); |
| BOOST_TEST((test(L"kimpo", lit(ws)))); |
| } |
| |
| { |
| using namespace boost::spirit::ascii; |
| BOOST_TEST((test(" kimpo", lit("kimpo"), space))); |
| BOOST_TEST((test(L" kimpo", lit(L"kimpo"), space))); |
| #if !BOOST_WORKAROUND(BOOST_MSVC, <= 1400) |
| BOOST_TEST((test(" x", lit("x"), space))); |
| #endif |
| BOOST_TEST((test(" x", lit('x'), space))); |
| BOOST_TEST((test(L" x", lit(L'x'), space))); |
| } |
| |
| { |
| using namespace boost::spirit::ascii; |
| BOOST_TEST((test(" kimpo", lit("kimpo"), space))); |
| BOOST_TEST((test(L" kimpo", lit(L"kimpo"), space))); |
| #if !BOOST_WORKAROUND(BOOST_MSVC, <= 1400) |
| BOOST_TEST((test(" x", lit("x"), space))); |
| #endif |
| BOOST_TEST((test(" x", lit('x'), space))); |
| BOOST_TEST((test(L" x", lit(L'x'), space))); |
| } |
| |
| { |
| using namespace boost::spirit::ascii; |
| std::string s; |
| BOOST_TEST((test_attr("kimpo", string("kimpo"), s))); |
| BOOST_TEST(s == "kimpo"); |
| s.clear(); |
| BOOST_TEST((test_attr(L"kimpo", string(L"kimpo"), s))); |
| BOOST_TEST(s == "kimpo"); |
| s.clear(); |
| BOOST_TEST((test_attr("x", string("x"), s))); |
| BOOST_TEST(s == "x"); |
| } |
| |
| { // lazy string |
| |
| using namespace boost::spirit::ascii; |
| namespace phx = boost::phoenix; |
| |
| BOOST_TEST((test("x", string(phx::val("x"))))); |
| |
| std::string str; // make sure lazy lits have an attribute |
| BOOST_TEST(test("x", string(phx::val("x"))[phx::ref(str) = _1])); |
| BOOST_TEST(str == "x"); |
| } |
| |
| return boost::report_errors(); |
| } |