flush_test.cpp

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

CPP
146
字号
// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)// (C) Copyright 2004-2007 Jonathan Turkanis// 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.)// See http://www.boost.org/libs/iostreams for documentation.#include <algorithm>  // equal.#include <fstream>#include <boost/iostreams/device/back_inserter.hpp>#include <boost/iostreams/device/file.hpp>#include <boost/iostreams/device/null.hpp>#include <boost/iostreams/filtering_stream.hpp>#include <boost/iostreams/stream.hpp>#include <boost/iostreams/operations.hpp>#include <boost/test/test_tools.hpp>#include <boost/test/unit_test.hpp>  #include "detail/filters.hpp"#include "detail/temp_file.hpp"#include "detail/verification.hpp"using namespace std;using namespace boost;using namespace boost::iostreams;using namespace boost::iostreams::test;using boost::unit_test::test_suite;void flush_test(){    {        stream_buffer<null_sink> null;        null.open(null_sink());        BOOST_CHECK_MESSAGE(             iostreams::flush(null),             "failed flushing stream_buffer"        );        BOOST_CHECK_MESSAGE(             null.strict_sync(),             "failed strict-syncing stream_buffer with "            "non-flushable resource"        );    }    {        stream<null_sink> null;        null.open(null_sink());        BOOST_CHECK_MESSAGE(             iostreams::flush(null),             "failed flushing stream"        );        BOOST_CHECK_MESSAGE(             null.strict_sync(),             "failed strict-syncing stream with "            "non-flushable resource"        );    }    {        filtering_ostream null;        null.push(null_sink());        BOOST_CHECK_MESSAGE(             iostreams::flush(null),             "failed flushing filtering_ostream"        );        BOOST_CHECK_MESSAGE(             null.strict_sync(),             "failed strict-syncing filtering_ostream with "            "non-flushable resource"        );    }    {        filtering_ostream null;        null.push(tolower_filter());        null.push(null_sink());        BOOST_CHECK_MESSAGE(             iostreams::flush(null),             "failed flushing filtering_ostream with non-flushable filter"        );        BOOST_CHECK_MESSAGE(             !null.strict_sync(),             "strict-syncing filtering_ostream with "            "non-flushable filter succeeded"        );    }    {        vector<char> dest1;        vector<char> dest2;        filtering_ostream out;        out.set_auto_close(false);        out.push(flushable_output_filter());        // Write to dest1.        out.push(iostreams::back_inserter(dest1));        write_data_in_chunks(out);        out.flush();        // Write to dest2.        out.pop();        out.push(iostreams::back_inserter(dest2));        write_data_in_chunks(out);        out.flush();        BOOST_CHECK_MESSAGE(            dest1.size() == dest2.size() &&             std::equal(dest1.begin(), dest1.end(), dest2.begin()),            "failed flush filtering_ostream with auto_close disabled"        );    }    {        vector<char> dest1;        vector<char> dest2;        filtering_ostream out;        out.set_auto_close(false);        out.push(flushable_output_filter());        out.push(flushable_output_filter());        // Write to dest1.        out.push(iostreams::back_inserter(dest1));        write_data_in_chunks(out);        out.flush();        // Write to dest2.        out.pop();        out.push(iostreams::back_inserter(dest2));        write_data_in_chunks(out);        out.flush();        BOOST_CHECK_MESSAGE(            dest1.size() == dest2.size() &&             std::equal(dest1.begin(), dest1.end(), dest2.begin()),            "failed flush filtering_ostream with two flushable filters "            "with auto_close disabled"        );    }}test_suite* init_unit_test_suite(int, char* []) {    test_suite* test = BOOST_TEST_SUITE("flush test");    test->add(BOOST_TEST_CASE(&flush_test));    return test;}

⌨️ 快捷键说明

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