108 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
//  (C) Copyright Gennadiy Rozental 2001.
 | 
						|
//  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 <boost/test/detail/global_typedef.hpp>
 | 
						|
#include <boost/test/utils/wrap_stringstream.hpp>
 | 
						|
#include <boost/test/tools/assertion_result.hpp>
 | 
						|
 | 
						|
// STL
 | 
						|
#include <cstddef>          // for std::size_t
 | 
						|
 | 
						|
#include <boost/test/detail/suppress_warnings.hpp>
 | 
						|
 | 
						|
//____________________________________________________________________________//
 | 
						|
 | 
						|
// ************************************************************************** //
 | 
						|
// **************               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
 | 
						|
    virtual ~output_test_stream();
 | 
						|
 | 
						|
    //! Checks if the stream is empty
 | 
						|
    //!
 | 
						|
    //!@param[in] flush_stream if true, flushes the stream after the call
 | 
						|
    virtual 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.
 | 
						|
    virtual 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.
 | 
						|
    virtual 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/resets the stream after the call.
 | 
						|
    virtual assertion_result    match_pattern( bool flush_stream = true );
 | 
						|
 | 
						|
    //! Flushes the stream
 | 
						|
    void            flush();
 | 
						|
 | 
						|
protected:
 | 
						|
 | 
						|
    //! Returns the string representation of the stream
 | 
						|
    //!
 | 
						|
    //! May be overriden in order to mutate the string before the matching operations.
 | 
						|
    virtual std::string get_stream_string_representation() const;
 | 
						|
 | 
						|
private:
 | 
						|
    // helper functions
 | 
						|
 | 
						|
    //! Length of the stream
 | 
						|
    std::size_t     length();
 | 
						|
 | 
						|
    //! Synching the stream into an internal string representation
 | 
						|
    virtual void    sync();
 | 
						|
 | 
						|
    struct Impl;
 | 
						|
    Impl*           m_pimpl;
 | 
						|
};
 | 
						|
 | 
						|
} // namespace test_tools
 | 
						|
} // namespace boost
 | 
						|
 | 
						|
#include <boost/test/detail/enable_warnings.hpp>
 | 
						|
 | 
						|
#endif // BOOST_TEST_OUTPUT_TEST_STREAM_HPP_012705GER
 |