$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: gennadiy.rozental_at_[hidden]
Date: 2008-07-06 21:01:17
Author: rogeeff
Date: 2008-07-06 21:01:17 EDT (Sun, 06 Jul 2008)
New Revision: 47153
URL: http://svn.boost.org/trac/boost/changeset/47153
Log:
Initial support for test tools to return value
Text files modified: 
   trunk/boost/test/impl/test_tools.ipp |    12 +++++++-----                            
   trunk/boost/test/test_tools.hpp      |    28 ++++++++++++++++++++++++++--            
   2 files changed, 33 insertions(+), 7 deletions(-)
Modified: trunk/boost/test/impl/test_tools.ipp
==============================================================================
--- trunk/boost/test/impl/test_tools.ipp	(original)
+++ trunk/boost/test/impl/test_tools.ipp	2008-07-06 21:01:17 EDT (Sun, 06 Jul 2008)
@@ -61,7 +61,7 @@
 // **************            TOOL BOX Implementation           ************** //
 // ************************************************************************** //
 
-void
+bool
 check_impl( predicate_result const& pr, wrap_stringstream& check_descr,
             const_string file_name, std::size_t line_num,
             tool_level tl, check_type ct,
@@ -101,7 +101,7 @@
         suffix  = " failed";
         break;
     default:
-        return;
+        return true;
     }
 
     switch( ct ) {
@@ -305,14 +305,14 @@
     switch( tl ) {
     case PASS:
         framework::assertion_result( true );
-        break;
+        return true;
 
     case WARN:
-        break;
+        return false;
 
     case CHECK:
         framework::assertion_result( false );
-        break;
+        return false;
         
     case REQUIRE:
         framework::assertion_result( false );
@@ -321,6 +321,8 @@
 
         throw execution_aborted();
     }
+
+    return true;
 }
 
 //____________________________________________________________________________//
Modified: trunk/boost/test/test_tools.hpp
==============================================================================
--- trunk/boost/test/test_tools.hpp	(original)
+++ trunk/boost/test/test_tools.hpp	2008-07-06 21:01:17 EDT (Sun, 06 Jul 2008)
@@ -78,17 +78,39 @@
 
 //____________________________________________________________________________//
 
+#if defined(__GNUC__)
+#  define BOOST_TEST_TOOLS_RETURN_VALUE
+#endif
+
+#ifdef BOOST_TEST_TOOLS_RETURN_VALUE
+#define BOOST_CHECK_IMPL( P, check_descr, TL, CT )                  \
+({                                                                  \
+    BOOST_TEST_PASSPOINT();                                         \
+    BOOST_TEST_TOOL_IMPL( check_impl, P, check_descr, TL, CT ), 0 );\
+})                                                                  \
+/**/
+#else
 #define BOOST_CHECK_IMPL( P, check_descr, TL, CT )                  \
 do {                                                                \
     BOOST_TEST_PASSPOINT();                                         \
     BOOST_TEST_TOOL_IMPL( check_impl, P, check_descr, TL, CT ), 0 );\
 } while( ::boost::test_tools::dummy_cond )                          \
 /**/
+#endif
 
 //____________________________________________________________________________//
 
 #define BOOST_TEST_PASS_ARG_INFO( r, data, arg ) , arg, BOOST_STRINGIZE( arg )
 
+#ifdef BOOST_TEST_TOOLS_RETURN_VALUE
+#define BOOST_CHECK_WITH_ARGS_IMPL( P, check_descr, TL, CT, ARGS )  \
+({                                                                  \
+    BOOST_TEST_PASSPOINT();                                         \
+    BOOST_TEST_TOOL_IMPL( check_frwd, P, check_descr, TL, CT )      \
+    BOOST_PP_SEQ_FOR_EACH( BOOST_TEST_PASS_ARG_INFO, '_', ARGS ) ); \
+})                                                                  \
+/**/
+#else
 #define BOOST_CHECK_WITH_ARGS_IMPL( P, check_descr, TL, CT, ARGS )  \
 do {                                                                \
     BOOST_TEST_PASSPOINT();                                         \
@@ -96,6 +118,7 @@
     BOOST_PP_SEQ_FOR_EACH( BOOST_TEST_PASS_ARG_INFO, '_', ARGS ) ); \
 } while( ::boost::test_tools::dummy_cond )                          \
 /**/
+#endif
 
 //____________________________________________________________________________//
 
@@ -460,7 +483,7 @@
 // ************************************************************************** //
 
 BOOST_TEST_DECL 
-void check_impl( predicate_result const& pr, wrap_stringstream& check_descr,
+bool check_impl( predicate_result const& pr, wrap_stringstream& check_descr,
                  const_string file_name, std::size_t line_num,
                  tool_level tl, check_type ct,
                  std::size_t num_args, ... );
@@ -485,13 +508,14 @@
 #define IMPL_FRWD( z, n, dummy )                                                    \
 template<typename Pred                                                              \
          BOOST_PP_REPEAT_ ## z( BOOST_PP_ADD( n, 1 ), TEMPL_PARAMS, _ )>            \
-inline void                                                                         \
+inline bool                                                                         \
 check_frwd( Pred P, wrap_stringstream& check_descr,                                 \
             const_string file_name, std::size_t line_num,                           \
             tool_level tl, check_type ct                                            \
             BOOST_PP_REPEAT_ ## z( BOOST_PP_ADD( n, 1 ), FUNC_PARAMS, _ )           \
 )                                                                                   \
 {                                                                                   \
+    return                                                                          \
     check_impl( P( BOOST_PP_REPEAT_ ## z( BOOST_PP_ADD( n, 1 ), PRED_PARAMS, _ ) ), \
                 check_descr, file_name, line_num, tl, ct,                           \
                 BOOST_PP_ADD( n, 1 )                                                \