Home | History | Annotate | Download | only in test
      1 //  (C) Copyright Gennadiy Rozental 2001-2008.
      2 //  Distributed under the Boost Software License, Version 1.0.
      3 //  (See accompanying file LICENSE_1_0.txt or copy at
      4 //  http://www.boost.org/LICENSE_1_0.txt)
      5 
      6 //  See http://www.boost.org/libs/test for the library home page.
      7 //
      8 //  File        : $RCSfile$
      9 //
     10 //  Version     : $Revision: 49312 $
     11 //
     12 //  Description : output_test_stream class definition
     13 // ***************************************************************************
     14 
     15 #ifndef BOOST_TEST_OUTPUT_TEST_STREAM_HPP_012705GER
     16 #define BOOST_TEST_OUTPUT_TEST_STREAM_HPP_012705GER
     17 
     18 // Boost.Test
     19 #include <boost/test/detail/global_typedef.hpp>
     20 #include <boost/test/utils/wrap_stringstream.hpp>
     21 #include <boost/test/predicate_result.hpp>
     22 
     23 // STL
     24 #include <cstddef>          // for std::size_t
     25 
     26 #include <boost/test/detail/suppress_warnings.hpp>
     27 
     28 //____________________________________________________________________________//
     29 
     30 // ************************************************************************** //
     31 // **************               output_test_stream             ************** //
     32 // ************************************************************************** //
     33 
     34 // class to be used to simplify testing of ostream-based output operations
     35 
     36 namespace boost {
     37 
     38 namespace test_tools {
     39 
     40 class BOOST_TEST_DECL output_test_stream : public wrap_stringstream::wrapped_stream {
     41     typedef unit_test::const_string const_string;
     42     typedef predicate_result        result_type;
     43 public:
     44     // Constructor
     45     explicit        output_test_stream( const_string    pattern_file_name = const_string(),
     46                                         bool            match_or_save     = true,
     47                                         bool            text_or_binary    = true );
     48 
     49     // Destructor
     50     ~output_test_stream();
     51 
     52     // checking function
     53     result_type     is_empty( bool flush_stream = true );
     54     result_type     check_length( std::size_t length, bool flush_stream = true );
     55     result_type     is_equal( const_string arg_, bool flush_stream = true );
     56     result_type     match_pattern( bool flush_stream = true );
     57 
     58     // explicit flush
     59     void            flush();
     60 
     61 private:
     62     // helper functions
     63     std::size_t     length();
     64     void            sync();
     65 
     66     struct Impl;
     67     Impl*           m_pimpl;
     68 };
     69 
     70 } // namespace test_tools
     71 
     72 } // namespace boost
     73 
     74 //____________________________________________________________________________//
     75 
     76 #include <boost/test/detail/enable_warnings.hpp>
     77 
     78 #endif // BOOST_TEST_OUTPUT_TEST_STREAM_HPP_012705GER
     79