// (C) Copyright Gennadiy Rozental 2001-2014. // 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/test for the library home page. // /// @file /// @brief output_test_stream class definition // *************************************************************************** #ifndef BOOST_TEST_OUTPUT_TEST_STREAM_HPP_012705GER #define BOOST_TEST_OUTPUT_TEST_STREAM_HPP_012705GER // Boost.Test #include #include #include // STL #include // for std::size_t #include //____________________________________________________________________________// // ************************************************************************** // // ************** output_test_stream ************** // // ************************************************************************** // namespace boost { namespace test_tools { //! Class to be used to simplify testing of ostream-based output operations class BOOST_TEST_DECL output_test_stream : public wrap_stringstream::wrapped_stream { typedef unit_test::const_string const_string; public: //! Constructor //! //!@param[in] pattern_file_name indicates the name of the file for matching. If the //! string is empty, the standard input or output streams are used instead //! (depending on match_or_save) //!@param[in] match_or_save if true, the pattern file will be read, otherwise it will be //! written //!@param[in] text_or_binary if false, opens the stream in binary mode. Otherwise the stream //! is opened with default flags and the carriage returns are ignored. explicit output_test_stream( const_string pattern_file_name = const_string(), bool match_or_save = true, bool text_or_binary = true ); // Destructor ~output_test_stream(); //! Checks if the stream is empty //! //!@param[in] flush_stream if true, flushes the stream after the call assertion_result is_empty( bool flush_stream = true ); //! Checks the length of the stream //! //!@param[in] length target length //!@param[in] flush_stream if true, flushes the stream after the call. Set to false to call //! additional checks on the same content. assertion_result check_length( std::size_t length, bool flush_stream = true ); //! Checks the content of the stream against a string //! //!@param[in] arg_ the target stream //!@param[in] flush_stream if true, flushes the stream after the call. assertion_result is_equal( const_string arg_, bool flush_stream = true ); //! Checks the content of the stream against a pattern file //! //!@param[in] flush_stream if true, flushes the stream after the call. assertion_result match_pattern( bool flush_stream = true ); //! Flushes the stream void flush(); private: // helper functions std::size_t length(); void sync(); struct Impl; Impl* m_pimpl; }; } // namespace test_tools } // namespace boost #include #endif // BOOST_TEST_OUTPUT_TEST_STREAM_HPP_012705GER