primitives_tests.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 137 行
CPP
137 行
/*============================================================================= Copyright (c) 1998-2003 Joel de Guzman Copyright (c) 2002-2003 Martin Wille http://spirit.sourceforge.net/ Use, modification and distribution is subject to 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 <iostream>using namespace std;#include <boost/spirit/include/classic_core.hpp>#include <boost/detail/lightweight_test.hpp>#include "impl/string_length.hpp"using namespace BOOST_SPIRIT_CLASSIC_NS;/////////////////////////////////////////////////////////////////////////////////// Primitives tests/////////////////////////////////////////////////////////////////////////////////voidprimitives_tests(){ char const* cp = "xyz.Jambalaya"; char const* cp_first = cp; char const* cp_last = cp + test_impl::string_length(cp); chlit<> cpx('x'); parse_info<char const*> pi = parse(cp_first, cp_last, cpx); BOOST_TEST(pi.hit); BOOST_TEST(!pi.full); BOOST_TEST(pi.length == 1); BOOST_TEST(pi.stop == &cp[1]); pi = parse(pi.stop, ch_p('y')); BOOST_TEST(pi.hit); BOOST_TEST(!pi.full); BOOST_TEST(pi.length == 1); BOOST_TEST(pi.stop == &cp[2]); scanner<char const*> scan(pi.stop, cp_last); match<char> hit = ch_p('z').parse(scan); BOOST_TEST(hit); BOOST_TEST(hit.value() == 'z'); BOOST_TEST(pi.stop == &cp[3]); pi = parse(pi.stop, eps_p); BOOST_TEST(pi.hit); BOOST_TEST(!pi.full); BOOST_TEST(pi.length == 0); BOOST_TEST(pi.stop == &cp[3]); pi = parse(pi.stop, nothing_p); BOOST_TEST(!pi.hit); BOOST_TEST(!pi.full); BOOST_TEST(pi.stop == &cp[3]); pi = parse(pi.stop, anychar_p); BOOST_TEST(pi.hit); BOOST_TEST(!pi.full); BOOST_TEST(pi.length == 1); BOOST_TEST(pi.stop == &cp[4]); scan.first = pi.stop; hit = range_p('A','Z').parse(scan); BOOST_TEST(hit); BOOST_TEST(hit.value() == 'J'); BOOST_TEST(pi.stop == &cp[5]); strlit<char const*> sp("ambalaya"); strlit<wchar_t const*> wsp(L"ambalaya"); char const* save = pi.stop; pi = parse(save, sp); BOOST_TEST(pi.hit); BOOST_TEST(pi.full); BOOST_TEST(pi.length == 8); BOOST_TEST(pi.stop == cp_last); pi = parse(save, wsp); BOOST_TEST(pi.hit); BOOST_TEST(pi.full); BOOST_TEST(pi.length == 8); BOOST_TEST(pi.stop == cp_last); pi = parse("\n", eol_p); BOOST_TEST(pi.hit); BOOST_TEST(pi.full); pi = parse("\r", eol_p); BOOST_TEST(pi.hit); BOOST_TEST(pi.full); pi = parse("\r\n", eol_p); BOOST_TEST(pi.hit); BOOST_TEST(pi.full); pi = parse("\n\r", eol_p); BOOST_TEST(pi.hit); BOOST_TEST(!pi.full); pi = parse("", end_p); BOOST_TEST(pi.hit); BOOST_TEST(pi.full); pi = parse("1", ~alpha_p); BOOST_TEST(pi.hit); BOOST_TEST(pi.full); pi = parse("a", ~alpha_p); BOOST_TEST(!pi.hit); pi = parse("a", ~~alpha_p); BOOST_TEST(pi.hit); BOOST_TEST(pi.full); pi = parse("1", ~~alpha_p); BOOST_TEST(!pi.hit);}/////////////////////////////////////////////////////////////////////////////////// Main/////////////////////////////////////////////////////////////////////////////////intmain(){ primitives_tests(); if (boost::report_errors() == 0) cout << "Tests concluded successfully\n"; return boost::report_errors();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?