1 //  (C) Copyright Gennadiy Rozental 2001-2005.
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: output_test_stream.hpp,v $
9 //
10 //  Version     : $Revision: 1.1.1.1 $
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 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 
48     // Destructor
49     ~output_test_stream();
50 
51     // checking function
52     result_type     is_empty( bool flush_stream = true );
53     result_type     check_length( std::size_t length, bool flush_stream = true );
54     result_type     is_equal( const_string arg_, bool flush_stream = true );
55     result_type     match_pattern( bool flush_stream = true );
56 
57     // explicit flush
58     void            flush();
59 
60 private:
61     // helper functions
62     std::size_t     length();
63     void            sync();
64 
65     struct Impl;
66     Impl*           m_pimpl;
67 };
68 
69 } // namespace test_tools
70 
71 } // namespace boost
72 
73 //____________________________________________________________________________//
74 
75 #include <boost/test/detail/enable_warnings.hpp>
76 
77 // ***************************************************************************
78 //  Revision History :
79 //
80 //  $Log: output_test_stream.hpp,v $
81 //  Revision 1.1.1.1  2006/03/20 20:15:27  ewalkup
82 //  boost libraries
83 //
84 //  Revision 1.4  2005/03/23 21:02:15  rogeeff
85 //  Sunpro CC 5.3 fixes
86 //
87 //  Revision 1.3  2005/02/20 08:27:06  rogeeff
88 //  This a major update for Boost.Test framework. See release docs for complete list of fixes/updates
89 //
90 //  Revision 1.2  2005/02/01 06:40:06  rogeeff
91 //  copyright update
92 //  old log entries removed
93 //  minor stilistic changes
94 //  depricated tools removed
95 //
96 //  Revision 1.1  2005/01/30 03:25:24  rogeeff
97 //  output_test_stream moved into separate file
98 //
99 // ***************************************************************************
100 
101 #endif // BOOST_TEST_OUTPUT_TEST_STREAM_HPP_012705GER
102