// (C) Copyright Gennadiy Rozental 2003-2004. // 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$ // // Description : tests function template test case // *************************************************************************** // Boost.Test #include #include #include #include #if !defined ( __GNUC__ ) || __GNUC__ > 2 #include typedef boost::onullstream onullstream_type; #else typedef boost::test_toolbox::output_test_stream onullstream_type; #endif // Boost #include #include #include namespace tf = boost::unit_test; namespace mpl = boost::mpl; // STL #include //____________________________________________________________________________// template void test0( Number* = 0 ) { BOOST_CHECK_EQUAL( 2, Number::value ); } BOOST_META_FUNC_TEST_CASE( test0 ); //____________________________________________________________________________// template void test1( Number* = 0 ) { BOOST_CHECK_EQUAL( 6, Number::value ); BOOST_REQUIRE( 2 <= Number::value ); BOOST_CHECK_EQUAL( 3, Number::value ); } BOOST_META_FUNC_TEST_CASE( test1 ); //____________________________________________________________________________// template void test2( Number* = 0 ) { throw Number(); } BOOST_META_FUNC_TEST_CASE( test2 ); //____________________________________________________________________________// int test_main( int, char* [] ) { tf::unit_test_counter num_of_failures; bool exception_caught; onullstream_type null_output; boost::scoped_ptr test; tf::unit_test_log::instance().set_log_stream( null_output ); { tf::unit_test_result_saver saver; typedef boost::mpl::list_c only_2; test.reset( BOOST_FUNC_TEMPLATE_TEST_CASE( test0, only_2 ) ); test->run(); tf::unit_test_result::instance().failures_details( num_of_failures, exception_caught ); } tf::unit_test_log::instance().set_log_stream( std::cout ); BOOST_CHECK_EQUAL( num_of_failures, (std::size_t)0 ); BOOST_CHECK( !exception_caught ); tf::unit_test_log::instance().set_log_stream( null_output ); { tf::unit_test_result_saver saver; typedef boost::mpl::range_c one_to_ten; test.reset( BOOST_FUNC_TEMPLATE_TEST_CASE( test0, one_to_ten ) ); test->run(); tf::unit_test_result::instance().failures_details( num_of_failures, exception_caught ); } tf::unit_test_log::instance().set_log_stream( std::cout ); BOOST_CHECK_EQUAL( num_of_failures, (std::size_t)9 ); BOOST_CHECK( !exception_caught ); tf::unit_test_log::instance().set_log_stream( null_output ); { tf::unit_test_result_saver saver; typedef boost::mpl::range_c one_to_five; test.reset( BOOST_FUNC_TEMPLATE_TEST_CASE( test1, one_to_five ) ); test->run(); tf::unit_test_result::instance().failures_details( num_of_failures, exception_caught ); } tf::unit_test_log::instance().set_log_stream( std::cout ); BOOST_CHECK_EQUAL( num_of_failures, (std::size_t)7 ); BOOST_CHECK( !exception_caught ); tf::unit_test_log::instance().set_log_stream( null_output ); bool passed = false; { tf::unit_test_result_saver saver; typedef boost::mpl::range_c one_to_three; test.reset( BOOST_FUNC_TEMPLATE_TEST_CASE( test2, one_to_three ) ); test->run(); tf::unit_test_result::instance().failures_details( num_of_failures, exception_caught ); passed = tf::unit_test_result::instance().has_passed(); } tf::unit_test_log::instance().set_log_stream( std::cout ); BOOST_CHECK_EQUAL( num_of_failures, (std::size_t)0 ); BOOST_CHECK( !exception_caught ); BOOST_CHECK( !passed ); return 0; } //____________________________________________________________________________// // *************************************************************************** // Revision History : // // $Log$ // Revision 1.7 2004/05/21 06:26:10 rogeeff // licence update // // Revision 1.6 2004/05/11 11:05:06 rogeeff // basic_cstring introduced and used everywhere // class properties reworked // namespace names shortened // // Revision 1.5 2003/12/01 00:42:38 rogeeff // prerelease cleaning // // *************************************************************************** // EOF