char.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 153 行

CPP
153
字号
//  Copyright (c) 2001-2008 Hartmut Kaiser// //  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)//#define KARMA_FAIL_COMPILATION#include <boost/config/warning_disable.hpp>#include <boost/detail/lightweight_test.hpp>#include <boost/spirit/include/support_argument.hpp>#include <boost/spirit/include/karma_char.hpp>#include <boost/spirit/include/karma_generate.hpp>#include <boost/spirit/include/karma_action.hpp>#include <boost/spirit/include/phoenix_core.hpp>#include <boost/spirit/include/phoenix_operator.hpp>#include <boost/spirit/include/phoenix_statement.hpp>#include "test.hpp"using namespace spirit_test;///////////////////////////////////////////////////////////////////////////////intmain(){    using namespace boost::spirit;    using namespace boost::phoenix;    using namespace boost::spirit::arg_names;                {        using namespace boost::spirit::ascii;                BOOST_TEST(test(" ", space));        BOOST_TEST(test(L" ", space));        BOOST_TEST(!test("\t", space));        BOOST_TEST(!test(L"\t", space));                BOOST_TEST(test(" ", space(' ')));        BOOST_TEST(test(L" ", space(L' ')));        BOOST_TEST(test("\t", space('\t')));        BOOST_TEST(test(L"\t", space(L'\t')));                BOOST_TEST(test(" ", space(' '), '\t'));        BOOST_TEST(test(L" ", space(' '), L'\t'));        BOOST_TEST(test("\t", space('\t'), ' '));        BOOST_TEST(test(L"\t", space('\t'), L' '));                BOOST_TEST(test(" ", space, ' '));        BOOST_TEST(test(L" ", space, L' '));        BOOST_TEST(test("\t", space, '\t'));        BOOST_TEST(test(L"\t", space, L'\t'));    }        {        BOOST_TEST(test("x", 'x'));        BOOST_TEST(test(L"x", L'x'));        BOOST_TEST(!test("x", 'y'));        BOOST_TEST(!test(L"x", L'y'));                BOOST_TEST(test("x", char_, 'x'));        BOOST_TEST(test(L"x", char_, L'x'));        BOOST_TEST(!test("x", char_, 'y'));        BOOST_TEST(!test(L"x", char_, L'y'));                BOOST_TEST(test("x", char_('x')));        BOOST_TEST(!test("x", char_('y')));        BOOST_TEST(test(L"x", char_(L'x')));        BOOST_TEST(!test(L"x", char_(L'y')));//         BOOST_TEST(test("x", char_("x")));//         BOOST_TEST(test(L"x", char_(L"x")));#if defined(KARMA_FAIL_COMPILATION)        BOOST_TEST(test("x", char_));           // anychar without a parameter doesn't make any sense#endif    }    {        BOOST_TEST(test(L"x", L'x'));        BOOST_TEST(test(L"x", 'x'));        BOOST_TEST(test(L"x", wchar, L'x'));        BOOST_TEST(test(L"x", wchar, 'x'));        BOOST_TEST(test(L"x", wchar(L'x')));        BOOST_TEST(test(L"x", wchar('x')));    }        {        using namespace boost::spirit::ascii;                BOOST_TEST(test_delimited("x ", 'x', ' '));        BOOST_TEST(test_delimited(L"x ", L'x', L' '));        BOOST_TEST(!test_delimited("x ", 'y', ' '));        BOOST_TEST(!test_delimited(L"x ", L'y', L' '));        BOOST_TEST(test_delimited("x ", 'x', space));        BOOST_TEST(test_delimited(L"x ", L'x', space(L' ')));        BOOST_TEST(!test_delimited("x ", 'y', space));        BOOST_TEST(!test_delimited(L"x ", L'y', space(L' ')));        BOOST_TEST(test_delimited("x ", char_, 'x', space));        BOOST_TEST(test_delimited(L"x ", char_, L'x', space(L' ')));        BOOST_TEST(!test_delimited("x ", char_, 'y', space));        BOOST_TEST(!test_delimited(L"x ", char_, L'y', space(L' ')));        BOOST_TEST(test_delimited("x ", char_('x'), space));        BOOST_TEST(!test_delimited("x ", char_('y'), space(L' ')));        BOOST_TEST(test_delimited(L"x ", char_(L'x'), space));        BOOST_TEST(!test_delimited(L"x ", char_(L'y'), space(L' ')));        //         BOOST_TEST(test_delimited("x ", char_("x"), space));#if defined(KARMA_FAIL_COMPILATION)        BOOST_TEST(test_delimited("x ", char_, space));   // anychar without a parameter doesn't make any sense#endif    }        {        BOOST_TEST(test_delimited(L"x ", L'x', wchar(' ')));        BOOST_TEST(test_delimited(L"x ", 'x', wchar(' ')));        BOOST_TEST(test_delimited(L"x ", wchar, L'x', wchar(' ')));        BOOST_TEST(test_delimited(L"x ", wchar, 'x', wchar(' ')));        BOOST_TEST(test_delimited(L"x ", wchar(L'x'), wchar(' ')));        BOOST_TEST(test_delimited(L"x ", wchar('x'), wchar(' ')));        #if defined(KARMA_FAIL_COMPILATION)        BOOST_TEST(test_delimited("x ", char_, space));   // anychar without a parameter doesn't make any sense#endif    }        // action tests    {        BOOST_TEST(test("x", char_[_1 = val('x')]));        BOOST_TEST(test(L"x", wchar[_1 = val(L'x')]));        BOOST_TEST(!test("x", char_[_1 = val('y')]));        BOOST_TEST(!test(L"x", wchar[_1 = val(L'y')]));    }    {   // lazy chars        using namespace boost::phoenix;        BOOST_TEST((test("x", char_(val('x')))));        BOOST_TEST((test(L"x", char_(val(L'x')))));    }    return boost::report_errors();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?