diff -Naur test/unit_test_suite.hpp test.new/unit_test_suite.hpp --- test/unit_test_suite.hpp 2010-04-02 06:03:33.000000000 +0200 +++ test.new/unit_test_suite.hpp 2010-12-21 15:10:34.835055571 +0100 @@ -92,8 +92,11 @@ \ static void BOOST_AUTO_TC_INVOKER( test_name )() \ { \ + BOOST_TEST_CHECKPOINT('"' << #test_name << "\" Fixture entry."); \ test_name t; \ + BOOST_TEST_CHECKPOINT('"' << #test_name << "\" entry."); \ t.test_method(); \ + BOOST_TEST_CHECKPOINT('"' << #test_name << "\" exit."); \ } \ \ struct BOOST_AUTO_TC_UNIQUE_ID( test_name ) {}; \ @@ -128,8 +131,11 @@ template \ static void run( boost::type* = 0 ) \ { \ + BOOST_TEST_CHECKPOINT('"' << #test_name << "\" Fixture entry.");\ test_name t; \ + BOOST_TEST_CHECKPOINT('"' << #test_name << "\" entry."); \ t.test_method(); \ + BOOST_TEST_CHECKPOINT('"' << #test_name << "\" exit."); \ } \ }; \ \ diff -Naur test/unit_test_suite.hpp~ test.new/unit_test_suite.hpp~ --- test/unit_test_suite.hpp~ 1970-01-01 01:00:00.000000000 +0100 +++ test.new/unit_test_suite.hpp~ 2010-12-21 13:14:38.875053649 +0100 @@ -0,0 +1,244 @@ +// (C) Copyright Gennadiy Rozental 2001-2008. +// 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$ +// +// Version : $Revision: 54633 $ +// +// Description : defines Unit Test Framework public API +// *************************************************************************** + +#ifndef BOOST_TEST_UNIT_TEST_SUITE_HPP_071894GER +#define BOOST_TEST_UNIT_TEST_SUITE_HPP_071894GER + +// Boost.Test +#include +#include + +//____________________________________________________________________________// + +// ************************************************************************** // +// ************** Non-auto (explicit) test case interface ************** // +// ************************************************************************** // + +#define BOOST_TEST_CASE( test_function ) \ +boost::unit_test::make_test_case( boost::unit_test::callback0<>(test_function), BOOST_TEST_STRINGIZE( test_function ) ) +#define BOOST_CLASS_TEST_CASE( test_function, tc_instance ) \ +boost::unit_test::make_test_case((test_function), BOOST_TEST_STRINGIZE( test_function ), tc_instance ) + +// ************************************************************************** // +// ************** BOOST_TEST_SUITE ************** // +// ************************************************************************** // + +#define BOOST_TEST_SUITE( testsuite_name ) \ +( new boost::unit_test::test_suite( testsuite_name ) ) + +// ************************************************************************** // +// ************** BOOST_AUTO_TEST_SUITE ************** // +// ************************************************************************** // + +#define BOOST_AUTO_TEST_SUITE( suite_name ) \ +namespace suite_name { \ +BOOST_AUTO_TU_REGISTRAR( suite_name )( BOOST_STRINGIZE( suite_name ) ); \ +/**/ + +// ************************************************************************** // +// ************** BOOST_FIXTURE_TEST_SUITE ************** // +// ************************************************************************** // + +#define BOOST_FIXTURE_TEST_SUITE( suite_name, F ) \ +BOOST_AUTO_TEST_SUITE( suite_name ) \ +typedef F BOOST_AUTO_TEST_CASE_FIXTURE; \ +/**/ + +// ************************************************************************** // +// ************** BOOST_AUTO_TEST_SUITE_END ************** // +// ************************************************************************** // + +#define BOOST_AUTO_TEST_SUITE_END() \ +BOOST_AUTO_TU_REGISTRAR( BOOST_JOIN( end_suite, __LINE__ ) )( 1 ); \ +} \ +/**/ + +// ************************************************************************** // +// ************** BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES ************** // +// ************************************************************************** // + +#define BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( test_name, n ) \ +struct BOOST_AUTO_TC_UNIQUE_ID( test_name ); \ + \ +static struct BOOST_JOIN( test_name, _exp_fail_num_spec ) \ +: boost::unit_test::ut_detail:: \ + auto_tc_exp_fail \ +{ \ + BOOST_JOIN( test_name, _exp_fail_num_spec )() \ + : boost::unit_test::ut_detail:: \ + auto_tc_exp_fail( n ) \ + {} \ +} BOOST_JOIN( test_name, _exp_fail_num_spec_inst ); \ + \ +/**/ + +// ************************************************************************** // +// ************** BOOST_FIXTURE_TEST_CASE ************** // +// ************************************************************************** // + +#define BOOST_FIXTURE_TEST_CASE( test_name, F ) \ +struct test_name : public F { void test_method(); }; \ + \ +static void BOOST_AUTO_TC_INVOKER( test_name )() \ +{ \ + BOOST_TEST_CHECKPOINT( #test_name << " fixture " << #F << " entry.");\ + test_name t; \ + BOOST_TEST_CHECKPOINT( #test_name << " entry."); \ + t.test_method(); \ + BOOST_TEST_CHECKPOINT( #test_name << " exit."); \ +} \ + \ +struct BOOST_AUTO_TC_UNIQUE_ID( test_name ) {}; \ + \ +BOOST_AUTO_TU_REGISTRAR( test_name )( \ + boost::unit_test::make_test_case( \ + &BOOST_AUTO_TC_INVOKER( test_name ), #test_name ), \ + boost::unit_test::ut_detail::auto_tc_exp_fail< \ + BOOST_AUTO_TC_UNIQUE_ID( test_name )>::instance()->value() ); \ + \ +void test_name::test_method() \ +/**/ + +// ************************************************************************** // +// ************** BOOST_AUTO_TEST_CASE ************** // +// ************************************************************************** // + +#define BOOST_AUTO_TEST_CASE( test_name ) \ +BOOST_FIXTURE_TEST_CASE( test_name, BOOST_AUTO_TEST_CASE_FIXTURE ) +/**/ + +// ************************************************************************** // +// ************** BOOST_AUTO_TEST_CASE_TEMPLATE ************** // +// ************************************************************************** // + +#define BOOST_AUTO_TEST_CASE_TEMPLATE( test_name, type_name, TL ) \ +template \ +struct test_name : public BOOST_AUTO_TEST_CASE_FIXTURE \ +{ void test_method(); }; \ + \ +struct BOOST_AUTO_TC_INVOKER( test_name ) { \ + template \ + static void run( boost::type* = 0 ) \ + { \ + BOOST_TEST_CHECKPOINT( #test_name << " fixture entry."); \ + test_name t; \ + BOOST_TEST_CHECKPOINT( #test_name << " entry."); \ + t.test_method(); \ + BOOST_TEST_CHECKPOINT( #test_name << " exit."); \ + } \ +}; \ + \ +BOOST_AUTO_TU_REGISTRAR( test_name )( \ + boost::unit_test::ut_detail::template_test_case_gen< \ + BOOST_AUTO_TC_INVOKER( test_name ),TL >( \ + BOOST_STRINGIZE( test_name ) ) ); \ + \ +template \ +void test_name::test_method() \ +/**/ + +// ************************************************************************** // +// ************** BOOST_TEST_CASE_TEMPLATE ************** // +// ************************************************************************** // + +#define BOOST_TEST_CASE_TEMPLATE( name, typelist ) \ + boost::unit_test::ut_detail::template_test_case_gen( \ + BOOST_TEST_STRINGIZE( name ) ) \ +/**/ + +// ************************************************************************** // +// ************** BOOST_TEST_CASE_TEMPLATE_FUNCTION ************** // +// ************************************************************************** // + +#define BOOST_TEST_CASE_TEMPLATE_FUNCTION( name, type_name ) \ +template \ +void BOOST_JOIN( name, _impl )( boost::type* ); \ + \ +struct name { \ + template \ + static void run( boost::type* frwrd = 0 ) \ + { \ + BOOST_JOIN( name, _impl )( frwrd ); \ + } \ +}; \ + \ +template \ +void BOOST_JOIN( name, _impl )( boost::type* ) \ +/**/ + +// ************************************************************************** // +// ************** BOOST_GLOBAL_FIXURE ************** // +// ************************************************************************** // + +#define BOOST_GLOBAL_FIXTURE( F ) \ +static boost::unit_test::ut_detail::global_fixture_impl BOOST_JOIN( gf_, F ) ; \ +/**/ + +// ************************************************************************** // +// ************** BOOST_AUTO_TEST_CASE_FIXTURE ************** // +// ************************************************************************** // + +namespace boost { namespace unit_test { namespace ut_detail { + +struct nil_t {}; + +} // namespace ut_detail +} // unit_test +} // namespace boost + +// Intentionally is in global namespace, so that FIXURE_TEST_SUITE can reset it in user code. +typedef ::boost::unit_test::ut_detail::nil_t BOOST_AUTO_TEST_CASE_FIXTURE; + +// ************************************************************************** // +// ************** Auto registration facility helper macros ************** // +// ************************************************************************** // + +#define BOOST_AUTO_TU_REGISTRAR( test_name ) \ +static boost::unit_test::ut_detail::auto_test_unit_registrar BOOST_JOIN( BOOST_JOIN( test_name, _registrar ), __LINE__ ) +#define BOOST_AUTO_TC_INVOKER( test_name ) BOOST_JOIN( test_name, _invoker ) +#define BOOST_AUTO_TC_UNIQUE_ID( test_name ) BOOST_JOIN( test_name, _id ) + +// ************************************************************************** // +// ************** BOOST_TEST_MAIN ************** // +// ************************************************************************** // + +#if defined(BOOST_TEST_MAIN) + +#ifdef BOOST_TEST_ALTERNATIVE_INIT_API +bool init_unit_test() { +#else +::boost::unit_test::test_suite* +init_unit_test_suite( int, char* [] ) { +#endif + +#ifdef BOOST_TEST_MODULE + using namespace ::boost::unit_test; + assign_op( framework::master_test_suite().p_name.value, BOOST_TEST_STRINGIZE( BOOST_TEST_MODULE ).trim( "\"" ), 0 ); + +#endif + +#ifdef BOOST_TEST_ALTERNATIVE_INIT_API + return true; +} +#else + return 0; +} +#endif + +#endif + +//____________________________________________________________________________// + +#endif // BOOST_TEST_UNIT_TEST_SUITE_HPP_071894GER +