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

📄 ios_state_unit_test.cpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    {        boost::io::ios_fill_saver  ifs( ss );        BOOST_CHECK_EQUAL( ' ', ss.fill() );        ss.fill( 'x' );        BOOST_CHECK_EQUAL( 'x', ss.fill() );    }    BOOST_CHECK_EQUAL( ' ', ss.fill() );    {        boost::io::ios_fill_saver  ifs( ss, '3' );        BOOST_CHECK_EQUAL( '3', ss.fill() );        ss.fill( '+' );        BOOST_CHECK_EQUAL( '+', ss.fill() );    }    BOOST_CHECK_EQUAL( ' ', ss.fill() );}// Unit test for locale savingvoidios_locale_saver_unit_test(){    using namespace std;    typedef numpunct<char>  npc_type;    stringstream  ss;    BOOST_CHECK( locale() == ss.getloc() );      // locales are unprintable, so no BOOST_CHECK_EQUAL    BOOST_CHECK( !has_facet<npc_type>(ss.getloc()) || (NULL     == dynamic_cast<backward_bool_names const *>(     &use_facet<npc_type>(ss.getloc()) ))  );      // my implementation of has_facet just checks IDs, but doesn't do dynamic      // cast (therefore if a specifc facet type is missing, but its base class      // is available, has_facet will mistakenly[?] match), so I have to do it      // here.  I wanted: "BOOST_CHECK( ! has_facet< backward_bool_names >(      // ss.getloc() ) )"    {        boost::io::ios_locale_saver  ils( ss );        BOOST_CHECK( locale() == ss.getloc() );        ss.imbue( locale::classic() );        BOOST_CHECK( locale::classic() == ss.getloc() );    }    BOOST_CHECK( locale() == ss.getloc() );    BOOST_CHECK( !has_facet<npc_type>(ss.getloc()) || (NULL     == dynamic_cast<backward_bool_names const *>(     &use_facet<npc_type>(ss.getloc()) ))  );    {        boost::io::ios_locale_saver  ils( ss, locale::classic() );        BOOST_CHECK( locale::classic() == ss.getloc() );        BOOST_CHECK( !has_facet<npc_type>(ss.getloc()) || (NULL         == dynamic_cast<backward_bool_names const *>(         &use_facet<npc_type>(ss.getloc()) ))  );        ss.imbue( locale(locale::classic(), new backward_bool_names) );        BOOST_CHECK( locale::classic() != ss.getloc() );        BOOST_CHECK( has_facet<npc_type>(ss.getloc()) && (NULL         != dynamic_cast<backward_bool_names const *>(         &use_facet<npc_type>(ss.getloc()) ))  );        //BOOST_CHECK( has_facet<backward_bool_names>(ss.getloc())  );    }    BOOST_CHECK( locale() == ss.getloc() );    BOOST_CHECK( !has_facet<npc_type>(ss.getloc()) || (NULL     == dynamic_cast<backward_bool_names const *>(     &use_facet<npc_type>(ss.getloc()) ))  );}// Unit test for user-defined integer data savingvoidios_iword_saver_unit_test(){    using namespace std;    stringstream  ss;    BOOST_CHECK_EQUAL( 0, ss.iword(word_index) );    {        boost::io::ios_iword_saver  iis( ss, word_index );        BOOST_CHECK_EQUAL( 0, ss.iword(word_index) );        ss.iword( word_index ) = 6;        BOOST_CHECK_EQUAL( 6, ss.iword(word_index) );    }    BOOST_CHECK_EQUAL( 0, ss.iword(word_index) );    {        boost::io::ios_iword_saver  iis( ss, word_index, 100 );        BOOST_CHECK_EQUAL( 100, ss.iword(word_index) );        ss.iword( word_index ) = -2000;        BOOST_CHECK_EQUAL( -2000, ss.iword(word_index) );    }    BOOST_CHECK_EQUAL( 0, ss.iword(word_index) );}// Unit test for user-defined pointer data savingvoidios_pword_saver_unit_test(){    using namespace std;    stringstream  ss;    BOOST_CHECK( NULL == ss.pword(word_index) );    {        boost::io::ios_pword_saver  ips( ss, word_index );        BOOST_CHECK( NULL == ss.pword(word_index) );        ss.pword( word_index ) = &ss;        BOOST_CHECK_EQUAL( &ss, ss.pword(word_index) );    }    BOOST_CHECK( NULL == ss.pword(word_index) );    {        boost::io::ios_pword_saver  ips( ss, word_index, ss.rdbuf() );        BOOST_CHECK_EQUAL( ss.rdbuf(), ss.pword(word_index) );        ss.pword( word_index ) = &ss;        BOOST_CHECK_EQUAL( &ss, ss.pword(word_index) );    }    BOOST_CHECK( NULL == ss.pword(word_index) );}// Unit test for all ios_base data savingvoidios_base_all_saver_unit_test(){    using namespace std;    stringstream  ss;    BOOST_CHECK_EQUAL( (ios_base::skipws | ios_base::dec), ss.flags() );    BOOST_CHECK_EQUAL( 6, ss.precision() );    BOOST_CHECK_EQUAL( 0, ss.width() );    {        boost::io::ios_base_all_saver  ibas( ss );        BOOST_CHECK_EQUAL( (ios_base::skipws | ios_base::dec), ss.flags() );        BOOST_CHECK_EQUAL( 6, ss.precision() );        BOOST_CHECK_EQUAL( 0, ss.width() );        ss << hex << unitbuf << setprecision( 5 ) << setw( 7 );        BOOST_CHECK_EQUAL( (ios_base::unitbuf | ios_base::hex         | ios_base::skipws), ss.flags() );        BOOST_CHECK_EQUAL( 5, ss.precision() );        BOOST_CHECK_EQUAL( 7, ss.width() );    }    BOOST_CHECK_EQUAL( (ios_base::skipws | ios_base::dec), ss.flags() );    BOOST_CHECK_EQUAL( 6, ss.precision() );    BOOST_CHECK_EQUAL( 0, ss.width() );}// Unit test for all basic_ios data savingvoidios_all_saver_unit_test(){    using namespace std;    typedef numpunct<char>  npc_type;    stringbuf  sb;    iostream   ss( &sb );    BOOST_CHECK_EQUAL( (ios_base::skipws | ios_base::dec), ss.flags() );    BOOST_CHECK_EQUAL( 6, ss.precision() );    BOOST_CHECK_EQUAL( 0, ss.width() );    BOOST_CHECK_EQUAL( ios_base::goodbit, ss.rdstate() );    BOOST_CHECK( ss.good() );    BOOST_CHECK_EQUAL( ios_base::goodbit, ss.exceptions() );    BOOST_CHECK( NULL == ss.tie() );    BOOST_CHECK( &sb == ss.rdbuf() );    BOOST_CHECK_EQUAL( ' ',  ss.fill() );    BOOST_CHECK( locale() == ss.getloc() );    {        boost::io::ios_all_saver  ias( ss );        BOOST_CHECK_EQUAL( (ios_base::skipws | ios_base::dec), ss.flags() );        BOOST_CHECK_EQUAL( 6, ss.precision() );        BOOST_CHECK_EQUAL( 0, ss.width() );        BOOST_CHECK_EQUAL( ios_base::goodbit, ss.rdstate() );        BOOST_CHECK( ss.good() );        BOOST_CHECK_EQUAL( ios_base::goodbit, ss.exceptions() );        BOOST_CHECK( NULL == ss.tie() );        BOOST_CHECK( &sb == ss.rdbuf() );        BOOST_CHECK_EQUAL( ' ', ss.fill() );        BOOST_CHECK( locale() == ss.getloc() );        ss << oct << showpos << noskipws;        BOOST_CHECK_EQUAL( (ios_base::showpos | ios_base::oct), ss.flags() );        ss << setprecision( 3 );        BOOST_CHECK_EQUAL( 3, ss.precision() );        ss << setw( 9 );        BOOST_CHECK_EQUAL( 9, ss.width() );        ss.setstate( ios_base::eofbit );        BOOST_CHECK_EQUAL( ios_base::eofbit, ss.rdstate() );        BOOST_CHECK( ss.eof() );        ss.exceptions( ios_base::failbit );        BOOST_CHECK_EQUAL( ios_base::failbit, ss.exceptions() );        {            boost::io::ios_iostate_saver  iis( ss );            char                          c;            BOOST_CHECK_THROW( ss >> c, std::ios_base::failure );        }        ss.tie( &clog );        BOOST_CHECK_EQUAL( &clog, ss.tie() );        ss.rdbuf( cerr.rdbuf() );        BOOST_CHECK_EQUAL( cerr.rdbuf(), ss.rdbuf() );        ss << setfill( 'x' );        BOOST_CHECK_EQUAL( 'x', ss.fill() );        ss.imbue( locale(locale::classic(), new backward_bool_names) );        BOOST_CHECK( locale() != ss.getloc() );        BOOST_CHECK( has_facet<npc_type>(ss.getloc()) && (NULL         != dynamic_cast<backward_bool_names const *>(         &use_facet<npc_type>(ss.getloc()) ))  );    }    BOOST_CHECK_EQUAL( (ios_base::skipws | ios_base::dec), ss.flags() );    BOOST_CHECK_EQUAL( 6, ss.precision() );    BOOST_CHECK_EQUAL( 0, ss.width() );    BOOST_CHECK_EQUAL( ios_base::goodbit, ss.rdstate() );    BOOST_CHECK( ss.good() );    BOOST_CHECK_EQUAL( ios_base::goodbit, ss.exceptions() );    BOOST_CHECK( NULL == ss.tie() );    BOOST_CHECK( &sb == ss.rdbuf() );    BOOST_CHECK_EQUAL( ' ', ss.fill() );    BOOST_CHECK( locale() == ss.getloc() );}// Unit test for user-defined data savingvoidios_word_saver_unit_test(){    using namespace std;    stringstream  ss;    BOOST_CHECK_EQUAL( 0, ss.iword(word_index) );    BOOST_CHECK( NULL == ss.pword(word_index) );    {        boost::io::ios_all_word_saver  iaws( ss, word_index );        BOOST_CHECK_EQUAL( 0, ss.iword(word_index) );        BOOST_CHECK( NULL == ss.pword(word_index) );        ss.iword( word_index ) = -11;        ss.pword( word_index ) = ss.rdbuf();        BOOST_CHECK_EQUAL( -11, ss.iword(word_index) );        BOOST_CHECK_EQUAL( ss.rdbuf(), ss.pword(word_index) );    }    BOOST_CHECK_EQUAL( 0, ss.iword(word_index) );    BOOST_CHECK( NULL == ss.pword(word_index) );}// Unit test programboost::unit_test_framework::test_suite *init_unit_test_suite(    int         ,   // "argc" is unused    char *      []  // "argv" is unused){    boost::unit_test_framework::test_suite *  test     = BOOST_TEST_SUITE( "I/O state saver test" );    test->add( BOOST_TEST_CASE(ios_flags_saver_unit_test) );    test->add( BOOST_TEST_CASE(ios_precision_saver_unit_test) );    test->add( BOOST_TEST_CASE(ios_width_saver_unit_test) );    test->add( BOOST_TEST_CASE(ios_iostate_saver_unit_test) );    test->add( BOOST_TEST_CASE(ios_exception_saver_unit_test) );    test->add( BOOST_TEST_CASE(ios_tie_saver_unit_test) );    test->add( BOOST_TEST_CASE(ios_rdbuf_saver_unit_test) );    test->add( BOOST_TEST_CASE(ios_fill_saver_unit_test) );    test->add( BOOST_TEST_CASE(ios_locale_saver_unit_test) );    test->add( BOOST_TEST_CASE(ios_iword_saver_unit_test) );    test->add( BOOST_TEST_CASE(ios_pword_saver_unit_test) );    test->add( BOOST_TEST_CASE(ios_base_all_saver_unit_test) );    test->add( BOOST_TEST_CASE(ios_all_saver_unit_test) );    test->add( BOOST_TEST_CASE(ios_word_saver_unit_test) );    return test;}

⌨️ 快捷键说明

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