// (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 "detail/filters.hpp" // Must come before operations.hpp for VC6. #include #include #include #include #include #include using namespace std; using namespace boost::iostreams; using namespace boost::iostreams::test; using boost::unit_test::test_suite; struct optimally_buffered_filter { typedef char char_type; struct category : input_filter_tag, optimally_buffered_tag { }; std::streamsize optimal_buffer_size() const { return default_filter_buffer_size + 1; } }; void buffer_size_test() { // Test device buffer sizes. BOOST_CHECK_MESSAGE( optimal_buffer_size(null_source()) == default_device_buffer_size, "wrong buffer size for sourcer" ); BOOST_CHECK_MESSAGE( optimal_buffer_size(null_sink()) == default_device_buffer_size, "wrong buffer size for sink" ); // Test filter buffer sizes. BOOST_CHECK_MESSAGE( optimal_buffer_size(toupper_filter()) == default_filter_buffer_size, "wrong buffer size for input filter" ); BOOST_CHECK_MESSAGE( optimal_buffer_size(tolower_filter()) == default_filter_buffer_size, "wrong buffer size for output filter" ); BOOST_CHECK_MESSAGE( optimal_buffer_size(toupper_multichar_filter()) == default_filter_buffer_size, "wrong buffer size for multi-character input filter" ); BOOST_CHECK_MESSAGE( optimal_buffer_size(tolower_multichar_filter()) == default_filter_buffer_size, "wrong buffer size for multi-character output filter" ); // Test custom buffer size. BOOST_CHECK_MESSAGE( optimal_buffer_size(optimally_buffered_filter()) == optimally_buffered_filter().optimal_buffer_size(), "wrong buffer size for multi-character output filter" ); } test_suite* init_unit_test_suite(int, char* []) { test_suite* test = BOOST_TEST_SUITE("buffer_size test"); test->add(BOOST_TEST_CASE(&buffer_size_test)); return test; }