Chris@16
|
1 // (C) Copyright Gennadiy Rozental 2003-2008.
|
Chris@16
|
2 // Distributed under the Boost Software License, Version 1.0.
|
Chris@16
|
3 // (See accompanying file LICENSE_1_0.txt or copy at
|
Chris@16
|
4 // http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
5
|
Chris@16
|
6 // See http://www.boost.org/libs/test for the library home page.
|
Chris@16
|
7 //
|
Chris@16
|
8 // File : $RCSfile$
|
Chris@16
|
9 //
|
Chris@101
|
10 // Version : $Revision$
|
Chris@16
|
11 //
|
Chris@16
|
12 // Description :
|
Chris@16
|
13 // ***************************************************************************
|
Chris@16
|
14
|
Chris@16
|
15 #ifndef BOOST_TEST_UNIT_TEST_LOG_FORMATTER_HPP_071894GER
|
Chris@16
|
16 #define BOOST_TEST_UNIT_TEST_LOG_FORMATTER_HPP_071894GER
|
Chris@16
|
17
|
Chris@16
|
18 // Boost.Test
|
Chris@16
|
19 #include <boost/test/detail/global_typedef.hpp>
|
Chris@16
|
20 #include <boost/test/detail/log_level.hpp>
|
Chris@16
|
21 #include <boost/test/detail/fwd_decl.hpp>
|
Chris@16
|
22
|
Chris@16
|
23 #include <boost/test/execution_monitor.hpp>
|
Chris@16
|
24
|
Chris@16
|
25 // STL
|
Chris@16
|
26 #include <iosfwd>
|
Chris@16
|
27 #include <string> // for std::string
|
Chris@16
|
28
|
Chris@16
|
29 #include <boost/test/detail/suppress_warnings.hpp>
|
Chris@16
|
30
|
Chris@16
|
31 //____________________________________________________________________________//
|
Chris@16
|
32
|
Chris@16
|
33 namespace boost {
|
Chris@16
|
34
|
Chris@16
|
35 namespace unit_test {
|
Chris@16
|
36
|
Chris@16
|
37 // ************************************************************************** //
|
Chris@16
|
38 // ************** log_entry_data ************** //
|
Chris@16
|
39 // ************************************************************************** //
|
Chris@16
|
40
|
Chris@16
|
41 struct BOOST_TEST_DECL log_entry_data {
|
Chris@16
|
42 log_entry_data()
|
Chris@16
|
43 {
|
Chris@16
|
44 m_file_name.reserve( 200 );
|
Chris@16
|
45 }
|
Chris@16
|
46
|
Chris@16
|
47 std::string m_file_name;
|
Chris@16
|
48 std::size_t m_line_num;
|
Chris@16
|
49 log_level m_level;
|
Chris@16
|
50
|
Chris@16
|
51 void clear()
|
Chris@16
|
52 {
|
Chris@16
|
53 m_file_name.erase();
|
Chris@16
|
54 m_line_num = 0;
|
Chris@16
|
55 m_level = log_nothing;
|
Chris@16
|
56 }
|
Chris@16
|
57 };
|
Chris@16
|
58
|
Chris@16
|
59 // ************************************************************************** //
|
Chris@16
|
60 // ************** checkpoint_data ************** //
|
Chris@16
|
61 // ************************************************************************** //
|
Chris@16
|
62
|
Chris@16
|
63 struct BOOST_TEST_DECL log_checkpoint_data
|
Chris@16
|
64 {
|
Chris@16
|
65 const_string m_file_name;
|
Chris@16
|
66 std::size_t m_line_num;
|
Chris@16
|
67 std::string m_message;
|
Chris@16
|
68
|
Chris@16
|
69 void clear()
|
Chris@16
|
70 {
|
Chris@16
|
71 m_file_name.clear();
|
Chris@16
|
72 m_line_num = 0;
|
Chris@16
|
73 m_message = std::string();
|
Chris@16
|
74 }
|
Chris@16
|
75 };
|
Chris@16
|
76
|
Chris@16
|
77 // ************************************************************************** //
|
Chris@16
|
78 // ************** unit_test_log_formatter ************** //
|
Chris@16
|
79 // ************************************************************************** //
|
Chris@16
|
80
|
Chris@16
|
81 class BOOST_TEST_DECL unit_test_log_formatter {
|
Chris@16
|
82 public:
|
Chris@16
|
83 enum log_entry_types { BOOST_UTL_ET_INFO,
|
Chris@16
|
84 BOOST_UTL_ET_MESSAGE,
|
Chris@16
|
85 BOOST_UTL_ET_WARNING,
|
Chris@16
|
86 BOOST_UTL_ET_ERROR,
|
Chris@16
|
87 BOOST_UTL_ET_FATAL_ERROR };
|
Chris@16
|
88
|
Chris@16
|
89 // Destructor
|
Chris@16
|
90 virtual ~unit_test_log_formatter() {}
|
Chris@16
|
91
|
Chris@16
|
92 // Formatter interface
|
Chris@16
|
93 virtual void log_start( std::ostream&, counter_t test_cases_amount ) = 0;
|
Chris@16
|
94 virtual void log_finish( std::ostream& ) = 0;
|
Chris@16
|
95 virtual void log_build_info( std::ostream& ) = 0;
|
Chris@16
|
96
|
Chris@16
|
97 virtual void test_unit_start( std::ostream&, test_unit const& tu ) = 0;
|
Chris@16
|
98 virtual void test_unit_finish( std::ostream&, test_unit const& tu, unsigned long elapsed ) = 0;
|
Chris@16
|
99 virtual void test_unit_skipped( std::ostream&, test_unit const& ) = 0;
|
Chris@16
|
100
|
Chris@16
|
101 virtual void log_exception( std::ostream& os, log_checkpoint_data const& cd, execution_exception const& ex )
|
Chris@16
|
102 {
|
Chris@16
|
103 // for backward compatibility
|
Chris@16
|
104 log_exception( os, cd, ex.what() );
|
Chris@16
|
105 }
|
Chris@16
|
106 virtual void log_exception( std::ostream&, log_checkpoint_data const&, const_string /* explanation */ ) {}
|
Chris@16
|
107
|
Chris@16
|
108 virtual void log_entry_start( std::ostream&, log_entry_data const&, log_entry_types let ) = 0;
|
Chris@16
|
109 virtual void log_entry_value( std::ostream&, const_string value ) = 0;
|
Chris@16
|
110 virtual void log_entry_value( std::ostream&, lazy_ostream const& value ); // there is a default impl
|
Chris@16
|
111 virtual void log_entry_finish( std::ostream& ) = 0;
|
Chris@16
|
112 };
|
Chris@16
|
113
|
Chris@16
|
114 } // namespace unit_test
|
Chris@16
|
115
|
Chris@16
|
116 } // namespace boost
|
Chris@16
|
117
|
Chris@16
|
118 //____________________________________________________________________________//
|
Chris@16
|
119
|
Chris@16
|
120 #include <boost/test/detail/enable_warnings.hpp>
|
Chris@16
|
121
|
Chris@16
|
122 #endif // BOOST_TEST_UNIT_TEST_LOG_FORMATTER_HPP_071894GER
|
Chris@16
|
123
|