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

📄 close_test.cpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        ch.push(closable_device<seekable>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(io::close(ch));        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and chain::reset()        seq.reset();        ch.push(closable_device<seekable>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Test dual-user filter    {        operation_sequence           seq;        filtering_streambuf<output>  ch;        operation                    dummy;        // Test chain::pop()        ch.push(            closable_filter<dual_use>(                dummy,                 seq.new_operation(1)            )        );        ch.push(closable_device<output>(seq.new_operation(3)));        BOOST_CHECK_NO_THROW(ch.pop());        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and io::close()        seq.reset();        ch.push(closable_device<output>(seq.new_operation(3)));        BOOST_CHECK_NO_THROW(io::close(ch));        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and chain::reset()        seq.reset();        ch.push(closable_device<output>(seq.new_operation(3)));        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Test direct sink    {        operation_sequence           seq;        filtering_streambuf<output>  ch;        // Test chain::pop()        ch.push(closable_filter<output>(seq.new_operation(1)));        ch.push(closable_device<direct_output>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(ch.pop());        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and io::close()        seq.reset();        ch.push(closable_device<direct_output>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(io::close(ch));        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and chain::reset()        seq.reset();        ch.push(closable_device<direct_output>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Test direct bidirectional device    {        operation_sequence           seq;        filtering_streambuf<output>  ch;        // Test chain::pop()        ch.push(closable_filter<output>(seq.new_operation(2)));        ch.push(            closable_device<direct_bidirectional>(                seq.new_operation(1),                seq.new_operation(3)            )        );        BOOST_CHECK_NO_THROW(ch.pop());        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and io::close()        seq.reset();        ch.push(            closable_device<direct_bidirectional>(                seq.new_operation(1),                seq.new_operation(3)            )        );        BOOST_CHECK_NO_THROW(io::close(ch));        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and chain::reset()        seq.reset();        ch.push(            closable_device<direct_bidirectional>(                seq.new_operation(1),                seq.new_operation(3)            )        );        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Test direct seekable device    {        operation_sequence           seq;        filtering_streambuf<output>  ch;        // Test chain::pop()        ch.push(closable_filter<output>(seq.new_operation(1)));        ch.push(closable_device<direct_seekable>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(ch.pop());        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and io::close()        seq.reset();        ch.push(closable_device<direct_seekable>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(io::close(ch));        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and chain::reset()        seq.reset();        ch.push(closable_device<direct_seekable>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }}void bidirectional_chain_test(){    // Test bidirectional filter and device    {        operation_sequence                  seq;        filtering_streambuf<bidirectional>  ch;                // Test chain::pop()        ch.push(            closable_filter<bidirectional>(                seq.new_operation(2),                seq.new_operation(3)            )        );        ch.push(            closable_device<bidirectional>(                seq.new_operation(1),                seq.new_operation(4)            )        );        BOOST_CHECK_NO_THROW(ch.pop());        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and io::close()        seq.reset();        ch.push(            closable_device<bidirectional>(                seq.new_operation(1),                seq.new_operation(4)            )        );        BOOST_CHECK_NO_THROW(io::close(ch));        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and chain::reset()        seq.reset();        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 direct bidirectional device    {        operation_sequence                  seq;        filtering_streambuf<bidirectional>  ch;        // Test chain::pop()        ch.push(            closable_filter<bidirectional>(                seq.new_operation(2),                seq.new_operation(3)            )        );        ch.push(            closable_device<direct_bidirectional>(                seq.new_operation(1),                seq.new_operation(4)            )        );        BOOST_CHECK_NO_THROW(ch.pop());        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and io::close()        seq.reset();        ch.push(            closable_device<direct_bidirectional>(                seq.new_operation(1),                seq.new_operation(4)            )        );        BOOST_CHECK_NO_THROW(io::close(ch));        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and chain::reset()        seq.reset();        ch.push(            closable_device<direct_bidirectional>(                seq.new_operation(1),                seq.new_operation(4)            )        );        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }}void seekable_chain_test(){    // Test seekable filter and device    {        operation_sequence             seq;        filtering_streambuf<seekable>  ch;        // Test chain::pop()        ch.push(closable_filter<seekable>(seq.new_operation(1)));        ch.push(closable_device<seekable>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(ch.pop());        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and io::close()        seq.reset();        ch.push(closable_device<seekable>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(io::close(ch));        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and chain::reset()        seq.reset();        ch.push(closable_device<seekable>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Test direct seekable device    {        operation_sequence             seq;        filtering_streambuf<seekable>  ch;        // Test chain::pop()        ch.push(closable_filter<seekable>(seq.new_operation(1)));        ch.push(closable_device<direct_seekable>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(ch.pop());        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and io::close()        seq.reset();        ch.push(closable_device<direct_seekable>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(io::close(ch));        BOOST_CHECK_OPERATION_SEQUENCE(seq);        // Test filter reuse and chain::reset()        seq.reset();        ch.push(closable_device<direct_seekable>(seq.new_operation(2)));        BOOST_CHECK_NO_THROW(ch.reset());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }}void stream_test(){    // Test source    {        operation_sequence                seq;        stream< closable_device<input> >  str;        str.open(closable_device<input>(seq.new_operation(1)));        BOOST_CHECK_NO_THROW(str.close());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Test sink    {        operation_sequence                 seq;        stream< closable_device<output> >  str;        str.open(closable_device<output>(seq.new_operation(1)));        BOOST_CHECK_NO_THROW(str.close());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Test bidirectional device    {        operation_sequence                        seq;        stream< closable_device<bidirectional> >  str;        str.open(            closable_device<bidirectional>(                seq.new_operation(1),                seq.new_operation(2)            )        );        BOOST_CHECK_NO_THROW(str.close());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }    // Test seekable device    {        operation_sequence                   seq;        stream< closable_device<seekable> >  str;        str.open(closable_device<seekable>(seq.new_operation(1)));        BOOST_CHECK_NO_THROW(str.close());        BOOST_CHECK_OPERATION_SEQUENCE(seq);    }}test_suite* init_unit_test_suite(int, char* []) {    test_suite* test = BOOST_TEST_SUITE("execute test");    test->add(BOOST_TEST_CASE(&input_chain_test));    test->add(BOOST_TEST_CASE(&output_chain_test));    test->add(BOOST_TEST_CASE(&bidirectional_chain_test));    test->add(BOOST_TEST_CASE(&seekable_chain_test));    test->add(BOOST_TEST_CASE(&stream_test));    return test;}

⌨️ 快捷键说明

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