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