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