123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- // (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: 57992 $
- //
- // 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 <boost/test/unit_test_suite_impl.hpp>
- #include <boost/test/framework.hpp>
- //____________________________________________________________________________//
- // ************************************************************************** //
- // ************** 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_AUTO_TC_UNIQUE_ID( test_name ) > \
- { \
- BOOST_JOIN( test_name, _exp_fail_num_spec )() \
- : boost::unit_test::ut_detail:: \
- auto_tc_exp_fail<BOOST_AUTO_TC_UNIQUE_ID( test_name ) >( 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 )() \
- { \
- test_name t; \
- t.test_method(); \
- } \
- \
- 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_FIXTURE_TEST_CASE_TEMPLATE ************** //
- // ************************************************************************** //
- #define BOOST_FIXTURE_TEST_CASE_TEMPLATE( test_name, type_name, TL, F ) \
- template<typename type_name> \
- struct test_name : public F \
- { void test_method(); }; \
- \
- struct BOOST_AUTO_TC_INVOKER( test_name ) { \
- template<typename TestType> \
- static void run( boost::type<TestType>* = 0 ) \
- { \
- test_name<TestType> t; \
- t.test_method(); \
- } \
- }; \
- \
- 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<typename type_name> \
- void test_name<type_name>::test_method() \
- /**/
- // ************************************************************************** //
- // ************** BOOST_AUTO_TEST_CASE_TEMPLATE ************** //
- // ************************************************************************** //
- #define BOOST_AUTO_TEST_CASE_TEMPLATE( test_name, type_name, TL ) \
- BOOST_FIXTURE_TEST_CASE_TEMPLATE( test_name, type_name, TL, BOOST_AUTO_TEST_CASE_FIXTURE )
- // ************************************************************************** //
- // ************** BOOST_TEST_CASE_TEMPLATE ************** //
- // ************************************************************************** //
- #define BOOST_TEST_CASE_TEMPLATE( name, typelist ) \
- boost::unit_test::ut_detail::template_test_case_gen<name,typelist >( \
- BOOST_TEST_STRINGIZE( name ) ) \
- /**/
- // ************************************************************************** //
- // ************** BOOST_TEST_CASE_TEMPLATE_FUNCTION ************** //
- // ************************************************************************** //
- #define BOOST_TEST_CASE_TEMPLATE_FUNCTION( name, type_name ) \
- template<typename type_name> \
- void BOOST_JOIN( name, _impl )( boost::type<type_name>* ); \
- \
- struct name { \
- template<typename TestType> \
- static void run( boost::type<TestType>* frwrd = 0 ) \
- { \
- BOOST_JOIN( name, _impl )( frwrd ); \
- } \
- }; \
- \
- template<typename type_name> \
- void BOOST_JOIN( name, _impl )( boost::type<type_name>* ) \
- /**/
- // ************************************************************************** //
- // ************** BOOST_GLOBAL_FIXURE ************** //
- // ************************************************************************** //
- #define BOOST_GLOBAL_FIXTURE( F ) \
- static boost::unit_test::ut_detail::global_fixture_impl<F> 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
|