LCOV - code coverage report
Current view: top level - opt/homebrew/include/boost/test/tools - assertion_result.hpp (source / functions) Hit Total Coverage
Test: test_dash_coverage.info Lines: 9 16 56.2 %
Date: 2026-06-25 07:23:51 Functions: 54 57 94.7 %

          Line data    Source code
       1             : //  (C) Copyright Gennadiy Rozental 2001.
       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
       9             : /// Enhanced result for test predicate that include message explaining failure
      10             : // ***************************************************************************
      11             : 
      12             : #ifndef BOOST_TEST_PREDICATE_RESULT_HPP_012705GER
      13             : #define BOOST_TEST_PREDICATE_RESULT_HPP_012705GER
      14             : 
      15             : // Boost.Test
      16             : #include <boost/test/utils/class_properties.hpp>
      17             : #include <boost/test/utils/wrap_stringstream.hpp>
      18             : #include <boost/test/utils/basic_cstring/basic_cstring.hpp>
      19             : 
      20             : // Boost
      21             : #include <boost/shared_ptr.hpp>
      22             : #include <boost/detail/workaround.hpp>
      23             : 
      24             : // STL
      25             : #include <cstddef>          // for std::size_t
      26             : 
      27             : #include <boost/test/detail/suppress_warnings.hpp>
      28             : 
      29             : //____________________________________________________________________________//
      30             : 
      31             : namespace boost {
      32             : namespace test_tools {
      33             : 
      34             : // ************************************************************************** //
      35             : // **************                assertion_result              ************** //
      36             : // ************************************************************************** //
      37             : 
      38             : //!@brief Type used for storing the result of an assertion.
      39             : class BOOST_TEST_DECL assertion_result {
      40             : 
      41             :     //!@internal
      42             :     typedef unit_test::const_string      const_string;
      43             : 
      44             :     //!@internal
      45           0 :     struct dummy { void nonnull() {} };
      46             : 
      47             :     //!@internal
      48             :     typedef void (dummy::*safe_bool)();
      49             : 
      50             : public:
      51             :     // Constructor
      52    26435229 :     assertion_result( bool pv_ )
      53     8811743 :     : p_predicate_value( pv_ )
      54    17623486 :     {}
      55             : 
      56             :     template<typename BoolConvertable>
      57       12282 :     assertion_result( BoolConvertable const& pv_ ) : p_predicate_value( !!pv_ ) {}
      58             : 
      59             :     // Access methods
      60     8817888 :     bool                operator!() const           { return !p_predicate_value; }
      61           0 :     void                operator=( bool pv_ )       { p_predicate_value.value = pv_; }
      62       23158 :     operator            safe_bool() const           { return !!p_predicate_value ? &dummy::nonnull : 0; }
      63             : 
      64             :     // Public properties
      65    17635768 :     BOOST_READONLY_PROPERTY( bool, (assertion_result) ) p_predicate_value;
      66             : 
      67             :     // Access methods
      68     8793497 :     bool                has_empty_message() const   { return !m_message; }
      69           0 :     wrap_stringstream&  message()
      70             :     {
      71           0 :         if( !m_message )
      72           0 :             m_message.reset( new wrap_stringstream );
      73             : 
      74           0 :         return *m_message;
      75           0 :     }
      76           4 :     const_string        message() const                   { return !m_message ? const_string() : const_string( m_message->str() ); }
      77             : 
      78             : private:
      79             :     // Data members
      80             :     shared_ptr<wrap_stringstream> m_message;
      81             : };
      82             : 
      83             : typedef assertion_result predicate_result;
      84             : 
      85             : } // namespace test_tools
      86             : } // namespace boost
      87             : 
      88             : #include <boost/test/detail/enable_warnings.hpp>
      89             : 
      90             : #endif // BOOST_TEST_PREDICATE_RESULT_HPP_012705GER

Generated by: LCOV version 1.16