diff options
Diffstat (limited to 'src/boost/libs/iostreams/test/bool_trait_test.cpp')
-rw-r--r-- | src/boost/libs/iostreams/test/bool_trait_test.cpp | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/src/boost/libs/iostreams/test/bool_trait_test.cpp b/src/boost/libs/iostreams/test/bool_trait_test.cpp new file mode 100644 index 00000000..46bca21d --- /dev/null +++ b/src/boost/libs/iostreams/test/bool_trait_test.cpp @@ -0,0 +1,252 @@ +/* + * 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. + * + * Tests the boolean type traits defined in boost/iostreams/traits.hpp. + * + * File: libs/iostreams/test/bool_trait_test.cpp + * Date: Sun Feb 17 17:52:59 MST 2008 + * Copyright: 2008 CodeRage, LLC + * Author: Jonathan Turkanis + * Contact: turkanis at coderage dot com + */ + +#include <fstream> +#include <sstream> +#include <boost/iostreams/detail/iostream.hpp> +#include <boost/iostreams/detail/streambuf/linked_streambuf.hpp> +#include <boost/iostreams/detail/iostream.hpp> +#include <boost/iostreams/device/array.hpp> +#include <boost/iostreams/filtering_stream.hpp> +#include <boost/iostreams/filtering_streambuf.hpp> +#include <boost/iostreams/stream.hpp> +#include <boost/iostreams/stream_buffer.hpp> +#include <boost/iostreams/traits.hpp> +#include <boost/test/unit_test.hpp> + +using namespace boost::iostreams; +namespace io = boost::iostreams; +using boost::unit_test::test_suite; + +typedef stream<array_source> array_istream; +typedef stream<warray_source> array_wistream; +typedef stream<array_sink> array_ostream; +typedef stream<warray_sink> array_wostream; +typedef stream<array> array_stream; +typedef stream<warray> array_wstream; +typedef stream_buffer<array> array_streambuf; +typedef stream_buffer<warray> array_wstreambuf; + +typedef io::filtering_stream<seekable> filtering_iostream; +typedef io::filtering_stream<seekable, wchar_t> filtering_wiostream; + +typedef io::detail::linked_streambuf<char> linkedbuf; +typedef io::detail::linked_streambuf<wchar_t> wlinkedbuf; + +#define BOOST_CHECK_BOOL_TRAIT(trait, type, status) \ + BOOST_CHECK(trait< type >::value == status) + /**/ + +#define BOOST_CHECK_STREAM_TRAIT( \ + trait, \ + istream_, wistream_, ostream_, wostream_, \ + iostream_, wiostream_, streambuf_, wstreambuf_, \ + ifstream_, wifstream_, ofstream_, wofstream_, \ + fstream_, wfstream_, filebuf_, wfilebuf_, \ + istringstream_, wistringstream_, ostringstream_, wostringstream_, \ + stringstream_, wstringstream_, stringbuf_, wstringbuf_, \ + array_istream_, array_wistream_, array_ostream_, array_wostream_, \ + array_stream_, array_wstream_, array_streambuf_, array_wstreambuf_, \ + filtering_istream_, filtering_wistream_, \ + filtering_ostream_, filtering_wostream_, \ + filtering_iostream_, filtering_wiostream_, \ + filtering_istreambuf_, filtering_wistreambuf_, \ + linkedbuf_, wlinkedbuf_ ) \ + BOOST_CHECK_BOOL_TRAIT(trait, std::istream, istream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::wistream, wistream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::ostream, ostream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::wostream, wostream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::iostream, iostream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::wiostream, wiostream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::streambuf, streambuf_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::wstreambuf, wstreambuf_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::wifstream, wifstream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::ofstream, ofstream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::wofstream, wofstream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::fstream, fstream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::wfstream, wfstream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::filebuf, filebuf_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::wfilebuf, wfilebuf_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::istringstream, istringstream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::wistringstream, wistringstream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::ostringstream, ostringstream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::wostringstream, wostringstream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::stringstream, stringstream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::wstringstream, wstringstream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::stringbuf, stringbuf_); \ + BOOST_CHECK_BOOL_TRAIT(trait, std::wstringbuf, wstringbuf_); \ + BOOST_CHECK_BOOL_TRAIT(trait, array_istream, array_istream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, array_wistream, array_wistream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, array_ostream, array_ostream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, array_wostream, array_wostream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, array_stream, array_stream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, array_wstream, array_wstream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, array_streambuf, array_streambuf_); \ + BOOST_CHECK_BOOL_TRAIT(trait, array_wstreambuf, array_wstreambuf_); \ + BOOST_CHECK_BOOL_TRAIT(trait, io::filtering_istream, filtering_istream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, io::filtering_wistream, filtering_wistream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, io::filtering_ostream, filtering_ostream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, io::filtering_wostream, filtering_wostream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, filtering_iostream, filtering_iostream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, filtering_wiostream, filtering_wiostream_); \ + BOOST_CHECK_BOOL_TRAIT(trait, io::filtering_istreambuf, filtering_istreambuf_); \ + BOOST_CHECK_BOOL_TRAIT(trait, io::filtering_wistreambuf, filtering_wistreambuf_); \ + BOOST_CHECK_BOOL_TRAIT(trait, linkedbuf, linkedbuf_); \ + BOOST_CHECK_BOOL_TRAIT(trait, wlinkedbuf, wlinkedbuf_); \ + BOOST_CHECK_BOOL_TRAIT(trait, io::array, false); \ + BOOST_CHECK_BOOL_TRAIT(trait, int, false); + /**/ + +void bool_trait_test() +{ + // Test is_istream + BOOST_CHECK_STREAM_TRAIT( + io::is_istream, + true, true, false, false, true, true, false, false, + true, true, false, false, true, true, false, false, + true, true, false, false, true, true, false, false, + true, true, false, false, true, true, false, false, + true, true, false, false, true, true, false, false, + false, false + ); + + // Test is_ostream + BOOST_CHECK_STREAM_TRAIT( + io::is_ostream, + false, false, true, true, true, true, false, false, + false, false, true, true, true, true, false, false, + false, false, true, true, true, true, false, false, + false, false, true, true, true, true, false, false, + false, false, true, true, true, true, false, false, + false, false + ); + + // Test is_iostream + BOOST_CHECK_STREAM_TRAIT( + io::is_iostream, + false, false, false, false, true, true, false, false, + false, false, false, false, true, true, false, false, + false, false, false, false, true, true, false, false, + false, false, false, false, true, true, false, false, + false, false, false, false, true, true, false, false, + false, false + ); + + // Test is_streambuf + BOOST_CHECK_STREAM_TRAIT( + io::is_streambuf, + false, false, false, false, false, false, true, true, + false, false, false, false, false, false, true, true, + false, false, false, false, false, false, true, true, + false, false, false, false, false, false, true, true, + false, false, false, false, false, false, true, true, + true, true + ); + + // Test is_std_io + BOOST_CHECK_STREAM_TRAIT( + io::is_std_io, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + true, true + ); + + // Test is_std_file_device + BOOST_CHECK_STREAM_TRAIT( + io::is_std_file_device, + false, false, false, false, false, false, false, false, + true, true, true, true, true, true, true, true, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + false, false + ); + + // Test is_std_string_device + BOOST_CHECK_STREAM_TRAIT( + io::is_std_string_device, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + true, true, true, true, true, true, true, true, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + false, false + ); + + // Test is_boost_stream + BOOST_CHECK_STREAM_TRAIT( + io::detail::is_boost_stream, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + true, true, true, true, true, true, false, false, + false, false, false, false, false, false, false, false, + false, false + ); + + // Test is_boost_stream_buffer + BOOST_CHECK_STREAM_TRAIT( + io::detail::is_boost_stream_buffer, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, true, true, + false, false, false, false, false, false, false, false, + false, false + ); + + // Test is_filtering_stream + BOOST_CHECK_STREAM_TRAIT( + io::detail::is_filtering_stream, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + true, true, true, true, true, true, false, false, + false, false + ); + + // Test is_filtering_streambuf + BOOST_CHECK_STREAM_TRAIT( + io::detail::is_filtering_streambuf, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, true, true, + false, false + ); + + // Test is_boost + BOOST_CHECK_STREAM_TRAIT( + io::detail::is_boost, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, + true, true, true, true, true, true, true, true, + true, true, true, true, true, true, true, true, + false, false + ); +} + +test_suite* init_unit_test_suite(int, char* []) +{ + test_suite* test = BOOST_TEST_SUITE("bool trait test"); + test->add(BOOST_TEST_CASE(&bool_trait_test)); + return test; +} |