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
|