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

📄 combine_test.cpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 CPP
字号:
/* * 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. * * Verifies that the close() member functions of filters and devices * are called with the correct arguments in the correct order when  * they are combined using combine(). * * File:        libs/iostreams/test/combine_test.cpp * Date:        Sun Jan 06 01:37:37 MST 2008 * Copyright:   2007-2008 CodeRage, LLC * Author:      Jonathan Turkanis * Contact:     turkanis at coderage dot com */#include <boost/iostreams/chain.hpp>#include <boost/iostreams/combine.hpp>#include <boost/test/test_tools.hpp>#include <boost/test/unit_test.hpp>  #include "detail/closable.hpp"#include "detail/operation_sequence.hpp"using namespace boost::iostreams;using namespace boost::iostreams::test;using boost::unit_test::test_suite;namespace io = boost::iostreams;void combine_test(){    // Combine a source and a sink    {        operation_sequence    seq;        chain<bidirectional>  ch;        ch.push(            io::combine(                closable_device<input>(seq.new_operation(1)),                closable_device<output>(seq.new_operation(2))            )        );        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Combine two bidirectional devices    {        operation_sequence    seq;        chain<bidirectional>  ch;        ch.push(            io::combine(                closable_device<bidirectional>(                    seq.new_operation(1),                    seq.new_operation(2)                ),                closable_device<bidirectional>(                    seq.new_operation(3),                    seq.new_operation(4)                )            )        );        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Combine two seekable devices    {        operation_sequence    seq;        chain<bidirectional>  ch;        ch.push(            io::combine(                closable_device<seekable>(seq.new_operation(1)),                closable_device<seekable>(seq.new_operation(2))            )        );        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Combine an input filter and an output filter    {        operation_sequence    seq;        chain<bidirectional>  ch;        ch.push(            io::combine(                closable_filter<input>(seq.new_operation(2)),                closable_filter<output>(seq.new_operation(3))            )        );        ch.push(            closable_device<bidirectional>(                seq.new_operation(1),                seq.new_operation(4)            )        );        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Combine two bidirectional filters    {        operation_sequence    seq;        chain<bidirectional>  ch;        ch.push(            io::combine(                closable_filter<bidirectional>(                    seq.new_operation(2),                    seq.new_operation(3)                ),                closable_filter<bidirectional>(                    seq.new_operation(4),                    seq.new_operation(5)                )            )        );        ch.push(            closable_device<bidirectional>(                seq.new_operation(1),                seq.new_operation(6)            )        );        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Combine two seekable filters    {        operation_sequence    seq;        chain<bidirectional>  ch;        ch.push(            io::combine(                closable_filter<seekable>(seq.new_operation(2)),                closable_filter<seekable>(seq.new_operation(3))            )        );        ch.push(            closable_device<bidirectional>(                seq.new_operation(1),                seq.new_operation(4)            )        );        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Combine a dual-use filter and an input filter    {        operation_sequence    seq;        chain<bidirectional>  ch;        operation             dummy;        ch.push(            io::combine(                closable_filter<input>(seq.new_operation(2)),                closable_filter<dual_use>(                    dummy,                    seq.new_operation(3)                )            )        );        ch.push(            closable_device<bidirectional>(                seq.new_operation(1),                seq.new_operation(4)            )        );        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Combine a dual-use filter and an output filter    {        operation_sequence    seq;        chain<bidirectional>  ch;        operation             dummy;        ch.push(            io::combine(                closable_filter<dual_use>(                    seq.new_operation(2),                    dummy                ),                closable_filter<output>(seq.new_operation(3))            )        );        ch.push(            closable_device<bidirectional>(                seq.new_operation(1),                seq.new_operation(4)            )        );        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Combine two dual-use filters    {        operation_sequence    seq;        chain<bidirectional>  ch;        operation             dummy;        ch.push(            io::combine(                closable_filter<dual_use>(                    seq.new_operation(2),                    dummy                ),                closable_filter<dual_use>(                    dummy,                    seq.new_operation(3)                )            )        );        ch.push(            closable_device<bidirectional>(                seq.new_operation(1),                seq.new_operation(4)            )        );        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }}test_suite* init_unit_test_suite(int, char* []) {    test_suite* test = BOOST_TEST_SUITE("combine test");    test->add(BOOST_TEST_CASE(&combine_test));    return test;}

⌨️ 快捷键说明

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