Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef BOOST_TEST_UNIT_TEST_SUITE_HPP_071894GER
00016 #define BOOST_TEST_UNIT_TEST_SUITE_HPP_071894GER
00017
00018
00019 #include <boost/test/unit_test_suite_impl.hpp>
00020 #include <boost/test/framework.hpp>
00021
00022
00023
00024
00025
00026
00027
00028 #define BOOST_TEST_CASE( test_function ) \
00029 boost::unit_test::make_test_case( boost::unit_test::callback0<>(test_function), BOOST_TEST_STRINGIZE( test_function ) )
00030 #define BOOST_CLASS_TEST_CASE( test_function, tc_instance ) \
00031 boost::unit_test::make_test_case((test_function), BOOST_TEST_STRINGIZE( test_function ), tc_instance )
00032
00033
00034
00035
00036
00037 #define BOOST_TEST_SUITE( testsuite_name ) \
00038 ( new boost::unit_test::test_suite( testsuite_name ) )
00039
00040
00041
00042
00043
00044 #define BOOST_AUTO_TEST_SUITE( suite_name ) \
00045 namespace suite_name { \
00046 BOOST_AUTO_TU_REGISTRAR( suite_name )( BOOST_STRINGIZE( suite_name ) ); \
00047
00048
00049
00050
00051
00052
00053 #define BOOST_FIXTURE_TEST_SUITE( suite_name, F ) \
00054 BOOST_AUTO_TEST_SUITE( suite_name ) \
00055 typedef F BOOST_AUTO_TEST_CASE_FIXTURE; \
00056
00057
00058
00059
00060
00061
00062 #define BOOST_AUTO_TEST_SUITE_END() \
00063 BOOST_AUTO_TU_REGISTRAR( BOOST_JOIN( end_suite, __LINE__ ) )( 1 ); \
00064 } \
00065
00066
00067
00068
00069
00070
00071 #define BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( test_name, n ) \
00072 struct BOOST_AUTO_TC_UNIQUE_ID( test_name ); \
00073 \
00074 static struct BOOST_JOIN( test_name, _exp_fail_num_spec ) \
00075 : boost::unit_test::ut_detail:: \
00076 auto_tc_exp_fail<BOOST_AUTO_TC_UNIQUE_ID( test_name ) > \
00077 { \
00078 BOOST_JOIN( test_name, _exp_fail_num_spec )() \
00079 : boost::unit_test::ut_detail:: \
00080 auto_tc_exp_fail<BOOST_AUTO_TC_UNIQUE_ID( test_name ) >( n ) \
00081 {} \
00082 } BOOST_JOIN( test_name, _exp_fail_num_spec_inst ); \
00083 \
00084
00085
00086
00087
00088
00089
00090 #define BOOST_FIXTURE_TEST_CASE( test_name, F ) \
00091 struct test_name : public F { void test_method(); }; \
00092 \
00093 static void BOOST_AUTO_TC_INVOKER( test_name )() \
00094 { \
00095 BOOST_TEST_CHECKPOINT('"' << #test_name << "\" Fixture entry."); \
00096 test_name t; \
00097 BOOST_TEST_CHECKPOINT('"' << #test_name << "\" entry."); \
00098 t.test_method(); \
00099 BOOST_TEST_CHECKPOINT('"' << #test_name << "\" exit."); \
00100 } \
00101 \
00102 struct BOOST_AUTO_TC_UNIQUE_ID( test_name ) {}; \
00103 \
00104 BOOST_AUTO_TU_REGISTRAR( test_name )( \
00105 boost::unit_test::make_test_case( \
00106 &BOOST_AUTO_TC_INVOKER( test_name ), #test_name ), \
00107 boost::unit_test::ut_detail::auto_tc_exp_fail< \
00108 BOOST_AUTO_TC_UNIQUE_ID( test_name )>::instance()->value() ); \
00109 \
00110 void test_name::test_method() \
00111
00112
00113
00114
00115
00116
00117 #define BOOST_AUTO_TEST_CASE( test_name ) \
00118 BOOST_FIXTURE_TEST_CASE( test_name, BOOST_AUTO_TEST_CASE_FIXTURE )
00119
00120
00121
00122
00123
00124
00125 #define BOOST_AUTO_TEST_CASE_TEMPLATE( test_name, type_name, TL ) \
00126 template<typename type_name> \
00127 struct test_name : public BOOST_AUTO_TEST_CASE_FIXTURE \
00128 { void test_method(); }; \
00129 \
00130 struct BOOST_AUTO_TC_INVOKER( test_name ) { \
00131 template<typename TestType> \
00132 static void run( boost::type<TestType>* = 0 ) \
00133 { \
00134 BOOST_TEST_CHECKPOINT('"' << #test_name << "\" Fixture entry.");\
00135 test_name<TestType> t; \
00136 BOOST_TEST_CHECKPOINT('"' << #test_name << "\" entry."); \
00137 t.test_method(); \
00138 BOOST_TEST_CHECKPOINT('"' << #test_name << "\" exit."); \
00139 } \
00140 }; \
00141 \
00142 BOOST_AUTO_TU_REGISTRAR( test_name )( \
00143 boost::unit_test::ut_detail::template_test_case_gen< \
00144 BOOST_AUTO_TC_INVOKER( test_name ),TL >( \
00145 BOOST_STRINGIZE( test_name ) ) ); \
00146 \
00147 template<typename type_name> \
00148 void test_name<type_name>::test_method() \
00149
00150
00151
00152
00153
00154
00155 #define BOOST_TEST_CASE_TEMPLATE( name, typelist ) \
00156 boost::unit_test::ut_detail::template_test_case_gen<name,typelist >( \
00157 BOOST_TEST_STRINGIZE( name ) ) \
00158
00159
00160
00161
00162
00163
00164 #define BOOST_TEST_CASE_TEMPLATE_FUNCTION( name, type_name ) \
00165 template<typename type_name> \
00166 void BOOST_JOIN( name, _impl )( boost::type<type_name>* ); \
00167 \
00168 struct name { \
00169 template<typename TestType> \
00170 static void run( boost::type<TestType>* frwrd = 0 ) \
00171 { \
00172 BOOST_JOIN( name, _impl )( frwrd ); \
00173 } \
00174 }; \
00175 \
00176 template<typename type_name> \
00177 void BOOST_JOIN( name, _impl )( boost::type<type_name>* ) \
00178
00179
00180
00181
00182
00183
00184 #define BOOST_GLOBAL_FIXTURE( F ) \
00185 static boost::unit_test::ut_detail::global_fixture_impl<F> BOOST_JOIN( gf_, F ) ; \
00186
00187
00188
00189
00190
00191
00192 namespace boost { namespace unit_test { namespace ut_detail {
00193
00194 struct nil_t {};
00195
00196 }
00197 }
00198 }
00199
00200
00201 typedef ::boost::unit_test::ut_detail::nil_t BOOST_AUTO_TEST_CASE_FIXTURE;
00202
00203
00204
00205
00206
00207 #define BOOST_AUTO_TU_REGISTRAR( test_name ) \
00208 static boost::unit_test::ut_detail::auto_test_unit_registrar BOOST_JOIN( BOOST_JOIN( test_name, _registrar ), __LINE__ )
00209 #define BOOST_AUTO_TC_INVOKER( test_name ) BOOST_JOIN( test_name, _invoker )
00210 #define BOOST_AUTO_TC_UNIQUE_ID( test_name ) BOOST_JOIN( test_name, _id )
00211
00212
00213
00214
00215
00216 #if defined(BOOST_TEST_MAIN)
00217
00218 #ifdef BOOST_TEST_ALTERNATIVE_INIT_API
00219 bool init_unit_test() {
00220 #else
00221 ::boost::unit_test::test_suite*
00222 init_unit_test_suite( int, char* [] ) {
00223 #endif
00224
00225 #ifdef BOOST_TEST_MODULE
00226 using namespace ::boost::unit_test;
00227 assign_op( framework::master_test_suite().p_name.value, BOOST_TEST_STRINGIZE( BOOST_TEST_MODULE ).trim( "\"" ), 0 );
00228
00229 #endif
00230
00231 #ifdef BOOST_TEST_ALTERNATIVE_INIT_API
00232 return true;
00233 }
00234 #else
00235 return 0;
00236 }
00237 #endif
00238
00239 #endif
00240
00241
00242
00243 #endif // BOOST_TEST_UNIT_TEST_SUITE_HPP_071894GER
00244