1// (C) Copyright Gennadiy Rozental 2005-2008. 2// Use, modification, and distribution are subject to the 3// Boost Software License, Version 1.0. (See accompanying file 4// http://www.boost.org/LICENSE_1_0.txt) 5 6// See http://www.boost.org/libs/test for the library home page. 7// 8// File : $RCSfile$ 9// 10// Version : $Revision: 54633 $ 11// 12// Description : Facilities to perform interaction-based testing 13// *************************************************************************** 14 15#ifndef BOOST_TEST_INTERACTION_BASED_IPP_112105GER 16#define BOOST_TEST_INTERACTION_BASED_IPP_112105GER 17 18// Boost.Test 19#include <boost/test/detail/config.hpp> 20 21#if BOOST_TEST_SUPPORT_INTERACTION_TESTING 22 23// Boost.Test 24#include <boost/test/detail/config.hpp> 25#include <boost/test/utils/callback.hpp> 26#include <boost/test/interaction_based.hpp> 27#include <boost/test/mock_object.hpp> 28#include <boost/test/framework.hpp> // for setup_error 29 30#include <boost/test/detail/suppress_warnings.hpp> 31 32// STL 33#include <stdexcept> 34#include <string> 35 36//____________________________________________________________________________// 37 38namespace boost { 39 40namespace itest { // interaction-based testing 41 42// ************************************************************************** // 43// ************** manager ************** // 44// ************************************************************************** // 45 46manager::manager() 47{ 48 instance_ptr( true, this ); 49} 50 51//____________________________________________________________________________// 52 53manager::~manager() 54{ 55 instance_ptr( true ); 56} 57 58//____________________________________________________________________________// 59 60manager* 61manager::instance_ptr( bool reset, manager* new_ptr ) 62{ 63 static manager dummy( 0 ); 64 65 static manager* ptr = &dummy; 66 67 if( reset ) { 68 if( new_ptr ) { 69 BOOST_TEST_SETUP_ASSERT( ptr == &dummy, BOOST_TEST_L( "Can't run two interation based test the same time" ) ); 70 71 ptr = new_ptr; 72 } 73 else 74 ptr = &dummy; 75 } 76 77 return ptr; 78} 79 80} // namespace itest 81 82} // namespace boost 83 84//____________________________________________________________________________// 85 86#include <boost/test/detail/enable_warnings.hpp> 87 88#endif // not ancient compiler 89 90#endif // BOOST_TEST_INTERACTION_BASED_IPP_112105GER 91