⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 replace_test.cpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 CPP
字号:
//  Boost string_algo library substr_test.cpp file  ------------------////  Copyright Pavol Droba 2002-2003. 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)//  See http://www.boost.org for updates, documentation, and revision history.#include <boost/algorithm/string/replace.hpp>#include <boost/algorithm/string/erase.hpp>#include <boost/algorithm/string/std/list_traits.hpp>#include <boost/algorithm/string/std/string_traits.hpp>// Include unit test framework#include <boost/test/included/test_exec_monitor.hpp>#include <string>#include <vector>#include <list>#include <iostream>// equals predicate is used for result comparison#include <boost/algorithm/string/predicate.hpp>#include <boost/test/test_tools.hpp>using namespace std;using namespace boost;void sequence_traits_test(){    // basic_string traits    BOOST_CHECK( boost::algorithm::has_native_replace<string>::value );    BOOST_CHECK( !boost::algorithm::has_stable_iterators<string>::value );    BOOST_CHECK( !boost::algorithm::has_const_time_insert<string>::value );        BOOST_CHECK( !boost::algorithm::has_const_time_erase<string>::value );     // vector traits    BOOST_CHECK( !boost::algorithm::has_native_replace< vector<char> >::value );    BOOST_CHECK( !boost::algorithm::has_stable_iterators< vector<char> >::value );    BOOST_CHECK( !boost::algorithm::has_const_time_insert< vector<char> >::value );        BOOST_CHECK( !boost::algorithm::has_const_time_erase< vector<char> >::value );     // list traits    BOOST_CHECK( !boost::algorithm::has_native_replace< list<char> >::value );    BOOST_CHECK( boost::algorithm::has_stable_iterators< list<char> >::value );    BOOST_CHECK( boost::algorithm::has_const_time_insert< list<char> >::value );       BOOST_CHECK( boost::algorithm::has_const_time_erase< list<char> >::value );    }// Combine tests for all variants of the algorithm#define C_ ,#define TEST_ALGO( Algo, Input, Params, Output ) \{\    BOOST_CHECKPOINT( #Algo " - Copy" );\\    string str1(Input);\\    /* Copy test */ \    BOOST_CHECK( Algo##_copy( str1, Params )==Output );\\    BOOST_CHECKPOINT( #Algo " - Iterator" );\    /* Iterator test */\    string strout;\    Algo##_copy( back_inserter(strout), str1, Params );\    BOOST_CHECK( strout==Output ); \\    /* In-place test */\    vector<char> vec1( str1.begin(), str1.end() );\    list<char> list1( str1.begin(), str1.end() );\\    BOOST_CHECKPOINT( #Algo " - Inplace(string)" );\    Algo( str1, Params ); \    BOOST_CHECK( equals( str1, Output ) ); \\    BOOST_CHECKPOINT( #Algo " - Inplace(vector)" );\    Algo( vec1, Params ); \    BOOST_CHECK( equals( vec1, Output ) );\\    BOOST_CHECKPOINT( #Algo " - Inplace(list)" );\    Algo( list1, Params ); \    BOOST_CHECK( equals( list1, Output ) );\}void replace_first_test(){    // replace first    TEST_ALGO( replace_first, "1abc3abc2", string("abc") C_ string("YYY"), string("1YYY3abc2") );    TEST_ALGO( ireplace_first, "1AbC3abc2", "aBc" C_ "YYY", string("1YYY3abc2") );    TEST_ALGO( replace_first, "1abc3abc2", string("abc") C_ string("Z"), string("1Z3abc2") );    TEST_ALGO( replace_first, "1abc3abc2", string("abc") C_ string("XXXX"), string("1XXXX3abc2") );    TEST_ALGO( replace_first, "1abc3abc2", string("") C_ string("XXXX"), string("1abc3abc2") );    TEST_ALGO( replace_first, "1abc3abc2", "" C_ "XXXX", string("1abc3abc2") );    TEST_ALGO( replace_first, "", string("") C_ string("XXXX"), string("") );    TEST_ALGO( erase_first, "1abc3abc2", string("abc"), string("13abc2") );    TEST_ALGO( ierase_first, "1aBc3abc2", "abC", "13abc2" );    TEST_ALGO( erase_first, "1abc3abc2", "abc", "13abc2" );    TEST_ALGO( erase_first, "1abc3abc2", string(""), string("1abc3abc2") );    TEST_ALGO( erase_first, "", string("abc"), string("") );}void replace_last_test(){    // replace last    TEST_ALGO( replace_last, "1abc3abc2", string("abc") C_ string("YYY"), string("1abc3YYY2") );    TEST_ALGO( ireplace_last, "1abc3AbC2", "aBc" C_ "YYY", string("1abc3YYY2") );    TEST_ALGO( replace_last, "1abc3abc2", string("abc") C_ string("Z"), string("1abc3Z2") );    TEST_ALGO( replace_last, "1abc3abc2", string("abc") C_ string("XXXX"), string("1abc3XXXX2") );    TEST_ALGO( replace_last, "1abc3abc2", "abc" C_ "XXXX", string("1abc3XXXX2") );    TEST_ALGO( replace_last, "", string("") C_ string("XXXX"), string("") );    TEST_ALGO( erase_last, "1abc3abc2", string("abc"), string("1abc32") );    TEST_ALGO( ierase_last, "1aBc3aBc2", "ABC", string("1aBc32") );    TEST_ALGO( erase_last, "1abc3abc2", "abc", string("1abc32") );    TEST_ALGO( erase_last, "1abc3abc2", string(""), string("1abc3abc2") );    TEST_ALGO( erase_last, "", string("abc"), string("") );}void replace_all_test(){    // replace all    TEST_ALGO( replace_all, "1abc3abc2", string("abc") C_ string("YYY"), string("1YYY3YYY2") );    TEST_ALGO( replace_all, string("1abc3abc2"), "/" C_ "\\", string("1abc3abc2") );    TEST_ALGO( ireplace_all, "1aBc3AbC2", "abC" C_ "YYY", string("1YYY3YYY2") );    TEST_ALGO( replace_all, "1abc3abc2", string("abc") C_ string("Z"), string("1Z3Z2") );    TEST_ALGO( replace_all, "1abc3abc2", string("abc") C_ string("XXXX"), string("1XXXX3XXXX2") );    TEST_ALGO( replace_all, "1abc3abc2", "abc" C_ "XXXX", string("1XXXX3XXXX2") );    TEST_ALGO( replace_all, "", string("") C_ string("XXXX"), string("") );    TEST_ALGO( erase_all, "1abc3abc2", string("abc"), string("132") );    TEST_ALGO( ierase_all, "1aBc3aBc2", "aBC", string("132") );    TEST_ALGO( erase_all, "1abc3abc2", "abc", string("132") );    TEST_ALGO( erase_all, "1abc3abc2", string(""), string("1abc3abc2") );    TEST_ALGO( erase_all, "", string("abc"), string("") );}void replace_nth_test(){    // replace nth    TEST_ALGO( replace_nth, "1abc3abc2", string("abc") C_ 0 C_ string("YYY"), string("1YYY3abc2") );    TEST_ALGO( replace_nth, "1abc3abc2", string("abc") C_ -1 C_ string("YYY"), string("1abc3YYY2") );    TEST_ALGO( ireplace_nth, "1AbC3abc2", "aBc" C_ 0 C_ "YYY", string("1YYY3abc2") );    TEST_ALGO( ireplace_nth, "1AbC3abc2", "aBc" C_ -1 C_ "YYY", string("1AbC3YYY2") );    TEST_ALGO( replace_nth, "1abc3abc2", string("abc") C_ 0 C_ string("Z"), string("1Z3abc2") );    TEST_ALGO( replace_nth, "1abc3abc2", string("abc") C_ 0 C_ string("XXXX"), string("1XXXX3abc2") );    TEST_ALGO( replace_nth, "1abc3abc2", "abc" C_ 0 C_ "XXXX", string("1XXXX3abc2") );    TEST_ALGO( replace_nth, "1abc3abc2", "abc" C_ 3 C_ "XXXX", string("1abc3abc2") );    TEST_ALGO( replace_nth, "1abc3abc2", "abc" C_ -3 C_ "XXXX", string("1abc3abc2") );    TEST_ALGO( replace_nth, "1abc3abc2", string("") C_ 0 C_ string("XXXX"), string("1abc3abc2") );    TEST_ALGO( replace_nth, "", string("") C_ 0 C_ string("XXXX"), string("") );    TEST_ALGO( replace_nth, "", string("") C_ -1 C_ string("XXXX"), string("") );    TEST_ALGO( erase_nth, "1abc3abc2", string("abc") C_ 0, string("13abc2") );    TEST_ALGO( erase_nth, "1abc3abc2", string("abc") C_ -1, string("1abc32") );    TEST_ALGO( erase_nth, "1abc3abc2", string("abc") C_ -3, string("1abc3abc2") );    TEST_ALGO( ierase_nth, "1aBc3aBc2", "ABC" C_ 0, string("13aBc2") );    TEST_ALGO( ierase_nth, "1aBc3aBc2", "ABC" C_ -1, string("1aBc32") );    TEST_ALGO( ierase_nth, "1aBc3aBc2", "ABC" C_ -3, string("1aBc3aBc2") );    TEST_ALGO( erase_nth, "1abc3abc2", "abc" C_ 0, string("13abc2") );    TEST_ALGO( erase_nth, "1abc3abc2", string("") C_ 0, string("1abc3abc2") );    TEST_ALGO( erase_nth, "", string("abc") C_ 0, string("") );    TEST_ALGO( erase_nth, "", string("abc") C_ -1, string("") );    TEST_ALGO( replace_nth, "1abc3abc2", string("abc") C_ 1 C_ string("YYY"), string("1abc3YYY2") );    TEST_ALGO( replace_nth, "1abc3abc2", string("abc") C_ 2 C_ string("YYY"), string("1abc3abc2") );}void replace_head_test(){    // replace head    TEST_ALGO( replace_head, "abc3abc2", 3 C_ string("YYY"), string("YYY3abc2") );    TEST_ALGO( replace_head, "abc3abc2", -3 C_ string("YYY"), string("YYYbc2") );    TEST_ALGO( replace_head, "abc3abc2", 3 C_ "YYY", string("YYY3abc2") );    TEST_ALGO( replace_head, "abc", 3 C_ string("Z"), string("Z") );    TEST_ALGO( replace_head, "abc", 6 C_ string("XXXX"), string("XXXX") );    TEST_ALGO( replace_head, "abc", -6 C_ string("XXXX"), string("abc") );    TEST_ALGO( replace_head, "abc3abc2", 0 C_ string("XXXX"), string("abc3abc2") );    TEST_ALGO( replace_head, "", 4 C_ string("XXXX"), string("") );    TEST_ALGO( replace_head, "", -4 C_ string("XXXX"), string("") );    TEST_ALGO( erase_head, "abc3abc2", 3, string("3abc2") );    TEST_ALGO( erase_head, "abc3abc2", -3, string("bc2") );    TEST_ALGO( erase_head, "abc3abc2", 0, string("abc3abc2") );    TEST_ALGO( erase_head, "", 4, string("") );    TEST_ALGO( erase_head, "", -4, string("") );}void replace_tail_test(){    // replace tail    TEST_ALGO( replace_tail, "abc3abc", 3 C_ string("YYY"), string("abc3YYY") );    TEST_ALGO( replace_tail, "abc3abc", -3 C_ "YYY", string("abcYYY") );    TEST_ALGO( replace_tail, "abc", 3 C_ string("Z"), string("Z") );    TEST_ALGO( replace_tail, "abc", 6 C_ string("XXXX"), string("XXXX") );    TEST_ALGO( replace_tail, "abc", -6 C_ string("XXXX"), string("abc") );    TEST_ALGO( replace_tail, "abc3abc", 0 C_ string("XXXX"), string("abc3abc") );    TEST_ALGO( replace_tail, "", 4 C_ string("XXXX"), string("") );    TEST_ALGO( replace_tail, "", -4 C_ string("XXXX"), string("") );    TEST_ALGO( erase_tail, "abc3abc", 3, string("abc3") );    TEST_ALGO( erase_tail, "abc3abc", -3, string("abc") );    TEST_ALGO( erase_tail, "abc3abc", 0, string("abc3abc") );    TEST_ALGO( erase_tail, "", 4, string("") );    TEST_ALGO( erase_tail, "", -4, string("") );}void replace_range_test(){    // replace_range    {        BOOST_CHECKPOINT( "replace_range" );        string str1("1abc3abc2");        BOOST_CHECK(             replace_range_copy(                 str1,                 make_iterator_range(str1.begin()+1, str1.begin()+4),                string("XXX") )==string("1XXX3abc2") );        string strout;        replace_range_copy(                 back_inserter( strout ),                str1,                 make_iterator_range(str1.begin()+1, str1.begin()+4),                string("XXX") );        BOOST_CHECK( strout==string("1XXX3abc2") );        replace_range(                 str1,                 make_iterator_range(str1.begin()+1, str1.begin()+4),                string("XXX") );        BOOST_CHECK( str1==string("1XXX3abc2") );    }    // erase_range    {        BOOST_CHECKPOINT( "erase_range" );        string str1("1abc3abc2");        BOOST_CHECK(         erase_range_copy(                 str1,                 make_iterator_range(str1.begin()+1, str1.begin()+4))==string("13abc2") );        string strout;        erase_range_copy(                 back_inserter( strout ),                str1,                 make_iterator_range(str1.begin()+1, str1.begin()+4));        BOOST_CHECK( strout==string("13abc2") );        erase_range(                 str1,                 make_iterator_range(str1.begin()+1, str1.begin()+4));        BOOST_CHECK( str1==string("13abc2") );    }}void collection_comp_test(){    // container traits compatibility tests    {        string strout;        replace_first_copy( back_inserter(strout), "1abc3abc2", "abc", "YYY" );        BOOST_CHECK( strout==string("1YYY3abc2") );     }    {        string strout;        replace_last_copy( back_inserter(strout), "1abc3abc2", "abc", "YYY" );        BOOST_CHECK( strout==string("1abc3YYY2") );     }       {        string strout;        replace_all_copy( back_inserter(strout), "1abc3abc2", "abc", "YYY" );        BOOST_CHECK( strout==string("1YYY3YYY2") );     }       {        string strout;        replace_nth_copy( back_inserter(strout), "1abc3abc2", "abc", 1, "YYY" );        BOOST_CHECK( strout==string("1abc3YYY2") );     }       {        string strout;        replace_head_copy( back_inserter(strout), "abc3abc2", 3 , "YYY" );        BOOST_CHECK( strout==string("YYY3abc2") );     }       {        string strout;        replace_tail_copy( back_inserter(strout), "abc3abc", 3 , "YYY" );        BOOST_CHECK( strout==string("abc3YYY") );     }   }// test main int test_main( int, char*[] ){    sequence_traits_test();     replace_first_test();    replace_last_test();    replace_all_test();    replace_nth_test();    replace_head_test();    replace_tail_test();    replace_range_test();    collection_comp_test();    return 0;}

⌨️ 快捷键说明

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