Chris@16: // (C) Copyright Gennadiy Rozental 2005-2008. Chris@16: // Use, modification, and distribution are subject to the Chris@16: // Boost Software License, Version 1.0. (See accompanying file Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: // See http://www.boost.org/libs/test for the library home page. Chris@16: // Chris@16: // File : $RCSfile$ Chris@16: // Chris@101: // Version : $Revision$ Chris@16: // Chris@16: // Description : Facilities to perform interaction-based testing Chris@16: // *************************************************************************** Chris@16: Chris@16: #ifndef BOOST_TEST_INTERACTION_BASED_IPP_112105GER Chris@16: #define BOOST_TEST_INTERACTION_BASED_IPP_112105GER Chris@16: Chris@16: // Boost.Test Chris@16: #include Chris@16: Chris@16: #if BOOST_TEST_SUPPORT_INTERACTION_TESTING Chris@16: Chris@16: // Boost.Test Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include // for setup_error Chris@16: Chris@16: #include Chris@16: Chris@16: // STL Chris@16: #include Chris@16: #include Chris@16: Chris@16: //____________________________________________________________________________// Chris@16: Chris@16: namespace boost { Chris@16: Chris@16: namespace itest { // interaction-based testing Chris@16: Chris@16: // ************************************************************************** // Chris@16: // ************** manager ************** // Chris@16: // ************************************************************************** // Chris@16: Chris@16: manager::manager() Chris@16: { Chris@16: instance_ptr( true, this ); Chris@16: } Chris@16: Chris@16: //____________________________________________________________________________// Chris@16: Chris@16: manager::~manager() Chris@16: { Chris@16: instance_ptr( true ); Chris@16: } Chris@16: Chris@16: //____________________________________________________________________________// Chris@16: Chris@16: manager* Chris@16: manager::instance_ptr( bool reset, manager* new_ptr ) Chris@16: { Chris@16: static manager dummy( 0 ); Chris@16: Chris@16: static manager* ptr = &dummy; Chris@16: Chris@16: if( reset ) { Chris@16: if( new_ptr ) { Chris@16: BOOST_TEST_SETUP_ASSERT( ptr == &dummy, BOOST_TEST_L( "Can't run two interation based test the same time" ) ); Chris@16: Chris@16: ptr = new_ptr; Chris@16: } Chris@16: else Chris@16: ptr = &dummy; Chris@16: } Chris@16: Chris@16: return ptr; Chris@16: } Chris@16: Chris@16: } // namespace itest Chris@16: Chris@16: } // namespace boost Chris@16: Chris@16: //____________________________________________________________________________// Chris@16: Chris@16: #include Chris@16: Chris@16: #endif // not ancient compiler Chris@16: Chris@16: #endif // BOOST_TEST_INTERACTION_BASED_IPP_112105GER