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

📄 ios_state_unit_test.cpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//  Boost ios_state_unit_test.cpp test file  ---------------------------------////  Copyright 2003 Daryle Walker.  Use, modification, and distribution are//  subject to the Boost Software License, Version 1.0.  (See accompanying file//  LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)//  See <http://www.boost.org/libs/io/> for the library's home page.//  Revision History//   12 Sep 2003  Initial version (Daryle Walker)#include <boost/io/ios_state.hpp>    // for boost::io::ios_flags_saver, etc.#include <boost/test/unit_test.hpp>  // for main, BOOST_CHECK, etc.#include <cstddef>   // for NULL#include <iomanip>   // for std::setiosflags, etc.#include <ios>       // for std::ios_base#include <iostream>  // for std::cout, std::cerr, etc.#include <istream>   // for std::iostream#include <locale>    // for std::locale, std::numpunct#include <sstream>   // for std::stringstream, etc.// Global constantsint const  word_index = std::ios_base::xalloc();// Facet with the (classic) bool names spelled backwardsclass backward_bool_names    : public std::numpunct<char>{    typedef std::numpunct<char>  base_type;public:    explicit  backward_bool_names( std::size_t refs = 0 )        : base_type( refs )        {}protected:    virtual ~backward_bool_names() {}    virtual  base_type::string_type  do_truename() const        { return "eurt"; }    virtual  base_type::string_type  do_falsename() const        { return "eslaf"; }};// Unit test for format-flag savingvoidios_flags_saver_unit_test(){    using namespace std;    stringstream  ss;    BOOST_CHECK_EQUAL( (ios_base::skipws | ios_base::dec), ss.flags() );    {        boost::io::ios_flags_saver  ifs( ss );        BOOST_CHECK_EQUAL( (ios_base::skipws | ios_base::dec), ss.flags() );        ss << noskipws << fixed << boolalpha;        BOOST_CHECK_EQUAL( (ios_base::boolalpha | ios_base::dec         | ios_base::fixed), ss.flags() );    }    BOOST_CHECK_EQUAL( (ios_base::skipws | ios_base::dec), ss.flags() );    {        boost::io::ios_flags_saver  ifs( ss, (ios_base::showbase         | ios_base::internal) );        BOOST_CHECK_EQUAL( (ios_base::showbase | ios_base::internal),         ss.flags() );        ss << setiosflags( ios_base::unitbuf );        BOOST_CHECK_EQUAL( (ios_base::showbase | ios_base::internal         | ios_base::unitbuf), ss.flags() );    }    BOOST_CHECK_EQUAL( (ios_base::skipws | ios_base::dec), ss.flags() );}// Unit test for precision savingvoidios_precision_saver_unit_test(){    using namespace std;    stringstream  ss;    BOOST_CHECK_EQUAL( 6, ss.precision() );    {        boost::io::ios_precision_saver  ips( ss );        BOOST_CHECK_EQUAL( 6, ss.precision() );        ss << setprecision( 4 );        BOOST_CHECK_EQUAL( 4, ss.precision() );    }    BOOST_CHECK_EQUAL( 6, ss.precision() );    {        boost::io::ios_precision_saver  ips( ss, 8 );        BOOST_CHECK_EQUAL( 8, ss.precision() );        ss << setprecision( 10 );        BOOST_CHECK_EQUAL( 10, ss.precision() );    }    BOOST_CHECK_EQUAL( 6, ss.precision() );}// Unit test for width savingvoidios_width_saver_unit_test(){    using namespace std;    stringstream  ss;    BOOST_CHECK_EQUAL( 0, ss.width() );    {        boost::io::ios_width_saver  iws( ss );        BOOST_CHECK_EQUAL( 0, ss.width() );        ss << setw( 4 );        BOOST_CHECK_EQUAL( 4, ss.width() );    }    BOOST_CHECK_EQUAL( 0, ss.width() );    {        boost::io::ios_width_saver  iws( ss, 8 );        BOOST_CHECK_EQUAL( 8, ss.width() );        ss << setw( 10 );        BOOST_CHECK_EQUAL( 10, ss.width() );    }    BOOST_CHECK_EQUAL( 0, ss.width() );}// Unit test for I/O-state savingvoidios_iostate_saver_unit_test(){    using namespace std;    stringstream  ss;    BOOST_CHECK_EQUAL( ios_base::goodbit, ss.rdstate() );    BOOST_CHECK( ss.good() );    {        boost::io::ios_iostate_saver  iis( ss );        char                          c;        BOOST_CHECK_EQUAL( ios_base::goodbit, ss.rdstate() );        BOOST_CHECK( ss.good() );        ss >> c;        BOOST_CHECK_EQUAL( (ios_base::eofbit | ios_base::failbit),         ss.rdstate() );        BOOST_CHECK( ss.eof() );        BOOST_CHECK( ss.fail() );        BOOST_CHECK( !ss.bad() );    }    BOOST_CHECK_EQUAL( ios_base::goodbit, ss.rdstate() );    BOOST_CHECK( ss.good() );    {        boost::io::ios_iostate_saver  iis( ss, ios_base::eofbit );        BOOST_CHECK_EQUAL( ios_base::eofbit, ss.rdstate() );        BOOST_CHECK( ss.eof() );        ss.setstate( ios_base::badbit );        BOOST_CHECK_EQUAL( (ios_base::eofbit | ios_base::badbit),         ss.rdstate() );        BOOST_CHECK( ss.eof() );        BOOST_CHECK( ss.fail() );        BOOST_CHECK( ss.bad() );    }    BOOST_CHECK_EQUAL( ios_base::goodbit, ss.rdstate() );    BOOST_CHECK( ss.good() );}// Unit test for exception-flag savingvoidios_exception_saver_unit_test(){    using namespace std;    stringstream  ss;    BOOST_CHECK_EQUAL( ios_base::goodbit, ss.exceptions() );    {        boost::io::ios_exception_saver  ies( ss );        BOOST_CHECK_EQUAL( ios_base::goodbit, ss.exceptions() );        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 );        }    }    BOOST_CHECK_EQUAL( ios_base::goodbit, ss.exceptions() );    {        boost::io::ios_exception_saver  ies( ss, ios_base::eofbit );        BOOST_CHECK_EQUAL( ios_base::eofbit, ss.exceptions() );        ss.exceptions( ios_base::badbit );        BOOST_CHECK_EQUAL( ios_base::badbit, ss.exceptions() );        {            boost::io::ios_iostate_saver  iis( ss );            char                          c;            BOOST_CHECK_NO_THROW( ss >> c );        }    }    BOOST_CHECK_EQUAL( ios_base::goodbit, ss.exceptions() );}// Unit test for tied-stream savingvoidios_tie_saver_unit_test(){    using namespace std;    BOOST_CHECK( NULL == cout.tie() );    {        boost::io::ios_tie_saver  its( cout );        BOOST_CHECK( NULL == cout.tie() );        cout.tie( &clog );        BOOST_CHECK_EQUAL( &clog, cout.tie() );    }    BOOST_CHECK( NULL == cout.tie() );    {        boost::io::ios_tie_saver  its( cout, &clog );        BOOST_CHECK_EQUAL( &clog, cout.tie() );        cout.tie( &cerr );        BOOST_CHECK_EQUAL( &cerr, cout.tie() );    }    BOOST_CHECK( NULL == cout.tie() );}// Unit test for connected-streambuf savingvoidios_rdbuf_saver_unit_test(){    using namespace std;    iostream  s( NULL );    BOOST_CHECK( NULL == s.rdbuf() );    {        stringbuf                   sb;        boost::io::ios_rdbuf_saver  irs( s );        BOOST_CHECK( NULL == s.rdbuf() );        s.rdbuf( &sb );        BOOST_CHECK_EQUAL( &sb, s.rdbuf() );    }    BOOST_CHECK( NULL == s.rdbuf() );    {        stringbuf                   sb1, sb2( "Hi there" );        boost::io::ios_rdbuf_saver  irs( s, &sb1 );        BOOST_CHECK_EQUAL( &sb1, s.rdbuf() );        s.rdbuf( &sb2 );        BOOST_CHECK_EQUAL( &sb2, s.rdbuf() );    }    BOOST_CHECK( NULL == s.rdbuf() );}// Unit test for fill-character savingvoidios_fill_saver_unit_test(){    using namespace std;    stringstream  ss;    BOOST_CHECK_EQUAL( ' ',  ss.fill() );

⌨️ 快捷键说明

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