// (C) Copyright Jonathan Turkanis 2004 // 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 #include #include #include #include #include #include #include #include #include "detail/sequence.hpp" #include "detail/verification.hpp" using namespace std; using namespace boost; using namespace boost::iostreams; using namespace boost::iostreams::test; using boost::unit_test_framework::test_suite; struct bzip2_alloc : std::allocator { }; void bzip2_test() { { // Compress and decompress data, using small buffer. text_sequence src; vector dest; bzip2_compressor zc( bzip2::default_block_size, default_filter_buffer_size ); filtering_ostream out(zc); out.push(boost::iostreams::back_inserter(dest)); iostreams::copy(make_iterator_range(src), out); out.reset(); bzip2_decompressor zd( bzip2::default_small, default_filter_buffer_size ); filtering_istream in(zd); in.push(make_iterator_range(dest)); BOOST_CHECK_MESSAGE( compare_container_and_stream(src, in), "failed bzip2 test with small buffer" ); } { // Compress and decompress data, using default buffer size. text_sequence src; vector dest; filtering_ostream out; out.push(bzip2_compressor()); out.push(boost::iostreams::back_inserter(dest)); iostreams::copy(make_iterator_range(src), out); out.reset(); filtering_istream in; in.push(bzip2_decompressor()); in.push(make_iterator_range(dest)); BOOST_CHECK_MESSAGE( compare_container_and_stream(src, in), "failed bzip2 test with default buffer size" ); } { // Compress and decompress data, using custom allocation. text_sequence src; vector dest; filtering_ostream out; out.push(basic_bzip2_compressor()); out.push(iostreams::back_inserter(dest)); iostreams::copy(make_iterator_range(src), out); out.reset(); filtering_istream in; in.push(basic_bzip2_decompressor()); in.push(make_iterator_range(dest)); BOOST_CHECK_MESSAGE( compare_container_and_stream(src, in), "failed bzip2 test with custom allocation" ); } } test_suite* init_unit_test_suite(int, char* []) { test_suite* test = BOOST_TEST_SUITE("bzip2 test"); test->add(BOOST_TEST_CASE(&bzip2_test)); return test; }