⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit_test_log.hpp

📁 CGAL is a collaborative effort of several sites in Europe and Israel. The goal is to make the most i
💻 HPP
字号:
//  (C) Copyright Gennadiy Rozental 2001-2004.//  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        : $RCSfile: unit_test_log.hpp,v $////  Version     : $Revision: 1.1.1.2 $////  Description : defines singleton class unit_test_log and all manipulators.//  unit_test_log has output stream like interface. It's implementation is//  completely hidden with pimple idiom// ***************************************************************************#ifndef BOOST_UNIT_TEST_LOG_HPP_071894GER#define BOOST_UNIT_TEST_LOG_HPP_071894GER// Boost.Test#include <boost/test/detail/unit_test_config.hpp>// BOOST#include <boost/utility.hpp>// STL#include <iosfwd>   // for std::ostream&#include <string>   // for std::string&; in fact need only forward declaration#include <boost/test/detail/suppress_warnings.hpp>namespace boost {namespace unit_test {//  each log level includes all subsequent higher loging levelsenum            log_level {    invalid_log_level        = -1,    log_successful_tests     = 0,    log_test_suites          = 1,    log_messages             = 2,    log_warnings             = 3,    log_all_errors           = 4, // reported by unit test macros    log_cpp_exception_errors = 5, // uncaught C++ exceptions    log_system_errors        = 6, // including timeouts, signals, traps    log_fatal_errors         = 7, // including unit test macros or                                     // fatal system errors    log_progress_only        = 8, // only unit test progress to be reported    log_nothing              = 9};// ************************************************************************** //// **************                log_entry_data                ************** //// ************************************************************************** //struct log_entry_data{    std::string     m_file;    std::size_t     m_line;    log_level       m_level;    void clear()    {        m_file    = std::string();        m_line    = 0;        m_level   = log_nothing;    }};// ************************************************************************** //// **************                checkpoint_data               ************** //// ************************************************************************** //struct log_checkpoint_data{    std::string     m_file;    std::size_t     m_line;    std::string     m_message;    void clear()    {        m_file    = std::string();        m_line    = 0;        m_message = std::string();    }};// ************************************************************************** //// **************                log manipulators              ************** //// ************************************************************************** //struct begin {};struct end {};struct level {    explicit    level( log_level l_ ) : m_level( l_ ) {}    log_level m_level;};struct line {    explicit    line( std::size_t ln_ ) : m_line_num( ln_ ) {}    std::size_t m_line_num;};struct file {    explicit    file( const_string fn_ ) : m_file_name( fn_ ) {}    const_string m_file_name;};struct checkpoint {    explicit    checkpoint( const_string message_ ) : m_message( message_ ) {}    const_string m_message;};struct log_exception {    explicit    log_exception( const_string what_ ) : m_what( what_ ) {}    const_string m_what;};struct log_progress {};// ************************************************************************** //// **************                 unit_test_log                ************** //// ************************************************************************** //class test_case;class unit_test_log_formatter;class unit_test_log : private boost::noncopyable { //!! Singletonpublic:    // Destructor    ~unit_test_log();    // instance access method;    static unit_test_log& instance();    void            start( bool print_build_info_ = false );    void            header( unit_test_counter test_cases_amount_ );    void            finish( unit_test_counter test_cases_amount_ );    // log configuration methods    void            set_log_stream( std::ostream& str_ );    void            set_log_threshold_level( log_level lev_ );    void            set_log_threshold_level_by_name( const_string lev_ );    void            set_log_format( const_string of );    void            set_log_formatter( unit_test_log_formatter* the_formatter );    void            clear_checkpoint();    // test case scope tracking    void            track_test_case_scope( test_case const& tc, bool in_out );    // entry configuration methods    unit_test_log&  operator<<( begin const& );         // begin entry     unit_test_log&  operator<<( end const& );           // end entry    unit_test_log&  operator<<( file const& );          // set file name    unit_test_log&  operator<<( line const& );          // set line number    unit_test_log&  operator<<( level const& );         // set entry level    unit_test_log&  operator<<( checkpoint const& );    // set checkpoint    // print value_ methods    unit_test_log&  operator<<( log_progress const& );    unit_test_log&  operator<<( log_exception const& );    unit_test_log&  operator<<( const_string value_ );private:    // formatters interface    friend class unit_test_log_formatter;    log_entry_data      const& entry_data() const;    log_checkpoint_data const& checkpoint_data() const;private:    // Constructor    unit_test_log();    struct          Impl;    Impl*           m_pimpl;}; // unit_test_log// helper macros#define BOOST_UT_LOG_BEGIN( file_name, line_num, loglevel )                     \    boost::unit_test::unit_test_log::instance()                                 \                                     << boost::unit_test::begin()               \                                     << boost::unit_test::level( loglevel )     \                                     << boost::unit_test::file( file_name )     \                                     << boost::unit_test::line( line_num ) <<   \/**/#define BOOST_UT_LOG_END             << boost::unit_test::end();// ************************************************************************** //// **************            test_case_scope_tracker           ************** //// ************************************************************************** //struct test_case_scope_tracker {    explicit            test_case_scope_tracker( test_case const& tc )     : m_tc( tc )                                    { unit_test_log::instance().track_test_case_scope( m_tc, true ); }                        ~test_case_scope_tracker()  { unit_test_log::instance().track_test_case_scope( m_tc, false ); }private:    test_case const&    m_tc;};} // namespace unit_test} // namespace boost#include <boost/test/detail/enable_warnings.hpp>// ***************************************************************************//  Revision History ://  //  $Log: unit_test_log.hpp,v $//  Revision 1.1.1.2  2004/11/20 10:52:16  spion//  Import of Boost v. 1.32.0////  Revision 1.24  2004/07/19 12:15:45  rogeeff//  guard rename//  warning suppress reworked////  Revision 1.23  2004/05/21 06:19:35  rogeeff//  licence update////  Revision 1.22  2004/05/13 09:06:48  rogeeff//  added fixed_mapping////  Revision 1.21  2004/05/11 11:00:51  rogeeff//  basic_cstring introduced and used everywhere//  class properties reworked////  Revision 1.20  2003/12/01 00:41:56  rogeeff//  prerelease cleaning//// ***************************************************************************#endif // BOOST_UNIT_TEST_LOG_HPP_071894GER

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -