| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | //  (C) Copyright Gennadiy Rozental 2001.//  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/// Enhanced result for test predicate that include message explaining failure// ***************************************************************************#ifndef BOOST_TEST_PREDICATE_RESULT_HPP_012705GER#define BOOST_TEST_PREDICATE_RESULT_HPP_012705GER// Boost.Test#include <boost/test/utils/class_properties.hpp>#include <boost/test/utils/wrap_stringstream.hpp>#include <boost/test/utils/basic_cstring/basic_cstring.hpp>// Boost#include <boost/shared_ptr.hpp>#include <boost/detail/workaround.hpp>// STL#include <cstddef>          // for std::size_t#include <boost/test/detail/suppress_warnings.hpp>//____________________________________________________________________________//namespace boost {namespace test_tools {// ************************************************************************** //// **************                assertion_result              ************** //// ************************************************************************** ////!@brief Type used for storing the result of an assertion.class BOOST_TEST_DECL assertion_result {    //!@internal    typedef unit_test::const_string      const_string;    //!@internal    struct dummy { void nonnull() {} };    //!@internal    typedef void (dummy::*safe_bool)();public:    // Constructor    assertion_result( bool pv_ )    : p_predicate_value( pv_ )    {}    template<typename BoolConvertable>    assertion_result( BoolConvertable const& pv_ ) : p_predicate_value( !!pv_ ) {}    // Access methods    bool                operator!() const           { return !p_predicate_value; }    void                operator=( bool pv_ )       { p_predicate_value.value = pv_; }    operator            safe_bool() const           { return !!p_predicate_value ? &dummy::nonnull : 0; }    // Public properties    BOOST_READONLY_PROPERTY( bool, (assertion_result) ) p_predicate_value;    // Access methods    bool                has_empty_message() const   { return !m_message; }    wrap_stringstream&  message()    {        if( !m_message )            m_message.reset( new wrap_stringstream );        return *m_message;    }    const_string        message() const                   { return !m_message ? const_string() : const_string( m_message->str() ); }private:    // Data members    shared_ptr<wrap_stringstream> m_message;};typedef assertion_result predicate_result;} // namespace test_tools} // namespace boost#include <boost/test/detail/enable_warnings.hpp>#endif // BOOST_TEST_PREDICATE_RESULT_HPP_012705GER
 |