boost/test/auto_unit_test.hpp
// (C) Copyright Gennadiy Rozental 2001-2003.
// Use, modification, and distribution are subject to 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: auto_unit_test.hpp,v $
//
// Version : $Revision: 1.7 $
//
// Description : support for automated test cases registration mechanism
// for simple function based test cases
// ***************************************************************************
#ifndef BOOST_AUTO_UNIT_TEST_HPP
#define BOOST_AUTO_UNIT_TEST_HPP
// Boost.Test
#include <boost/test/unit_test.hpp>
// ************************************************************************** //
// ************** auto_unit_test_registrar ************** //
// ************************************************************************** //
namespace boost {
namespace unit_test_framework {
namespace detail {
inline boost::unit_test_framework::test_suite*
auto_unit_test_suite()
{
static boost::unit_test_framework::test_suite* inst = BOOST_TEST_SUITE( "Auto Unit Test" );
return inst;
}
struct auto_unit_test_registrar
{
// Constructor
explicit auto_unit_test_registrar( test_case* tc ) { auto_unit_test_suite()->add( tc ); }
};
} // detail
} // unit_test_framework
} // namespace boost
// ************************************************************************** //
// ************** BOOST_AUTO_UNIT_TEST ************** //
// ************************************************************************** //
#define BOOST_AUTO_UNIT_TEST( func_name ) \
static void func_name(); \
static boost::unit_test_framework::detail::auto_unit_test_registrar \
BOOST_JOIN( test_registrar, __LINE__) \
( BOOST_TEST_CASE( func_name ) ); \
static void func_name() \
/**/
// ************************************************************************** //
// ************** BOOST_AUTO_UNIT_TEST ************** //
// ************************************************************************** //
#ifdef BOOST_AUTO_TEST_MAIN
boost::unit_test_framework::test_suite*
init_unit_test_suite( int /* argc */, char* /* argv */ [] ) {
return boost::unit_test_framework::detail::auto_unit_test_suite();
}
#endif
// ***************************************************************************
// Revision History :
//
// $Log: auto_unit_test.hpp,v $
// Revision 1.7 2003/12/01 00:41:56 rogeeff
// prerelease cleaning
//
// ***************************************************************************
#endif // BOOST_AUTO_UNIT_TEST_HPP