Line data Source code
1 : // (C) Copyright Gennadiy Rozental 2001. 2 : // Distributed under the Boost Software License, Version 1.0. 3 : // (See accompanying file LICENSE_1_0.txt or copy at 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 9 : /// Defines global_fixture 10 : // *************************************************************************** 11 : 12 : #ifndef BOOST_TEST_TREE_GLOBAL_FIXTURE_HPP_091911GER 13 : #define BOOST_TEST_TREE_GLOBAL_FIXTURE_HPP_091911GER 14 : 15 : // Boost.Test 16 : #include <boost/test/detail/config.hpp> 17 : #include <boost/test/detail/global_typedef.hpp> 18 : 19 : #include <boost/test/tree/observer.hpp> 20 : #include <boost/test/tree/fixture.hpp> 21 : 22 : #include <boost/test/detail/suppress_warnings.hpp> 23 : 24 : 25 : //____________________________________________________________________________// 26 : 27 : namespace boost { 28 : namespace unit_test { 29 : 30 : // ************************************************************************** // 31 : // ************** global_configuration ************** // 32 : // ************************************************************************** // 33 : 34 : class BOOST_TEST_DECL global_configuration : public test_observer { 35 : 36 : public: 37 : // Constructor 38 : global_configuration(); 39 : 40 : /// Unregisters the global fixture from the framework 41 : /// 42 : /// This is called by the framework at shutdown time 43 : void unregister_from_framework(); 44 : 45 : // Dtor 46 : ~global_configuration() BOOST_OVERRIDE; 47 : 48 : // Happens after the framework global observer init has been done 49 0 : int priority() BOOST_OVERRIDE { return 1; } 50 : 51 : private: 52 : bool registered; 53 : }; 54 : 55 : 56 : 57 : // ************************************************************************** // 58 : // ************** global_fixture ************** // 59 : // ************************************************************************** // 60 : 61 : class BOOST_TEST_DECL global_fixture : public test_unit_fixture { 62 : 63 : public: 64 : // Constructor 65 : global_fixture(); 66 : 67 : /// Unregisters the global fixture from the framework 68 : /// 69 : /// This is called by the framework at shutdown time 70 : void unregister_from_framework(); 71 : 72 : // Dtor 73 : ~global_fixture() BOOST_OVERRIDE; 74 : 75 : private: 76 : bool registered; 77 : }; 78 : 79 : //____________________________________________________________________________// 80 : 81 : namespace ut_detail { 82 : 83 : template<typename F> 84 : struct global_configuration_impl : public global_configuration { 85 : // Constructor 86 : global_configuration_impl() : m_configuration_observer( 0 ) { 87 : } 88 : 89 : // test observer interface 90 : void test_start( counter_t, test_unit_id ) BOOST_OVERRIDE { 91 : m_configuration_observer = new F; 92 : } 93 : 94 : // test observer interface 95 : void test_finish() BOOST_OVERRIDE { 96 : if(m_configuration_observer) { 97 : delete m_configuration_observer; 98 : m_configuration_observer = 0; 99 : } 100 : } 101 : private: 102 : // Data members 103 : F* m_configuration_observer; 104 : }; 105 : 106 : template<typename F> 107 : struct global_fixture_impl : public global_fixture { 108 : // Constructor 109 : global_fixture_impl() : m_fixture( 0 ) { 110 : } 111 : 112 : // test fixture interface 113 : void setup() BOOST_OVERRIDE { 114 : m_fixture = new F; 115 : setup_conditional(*m_fixture); 116 : } 117 : 118 : // test fixture interface 119 : void teardown() BOOST_OVERRIDE { 120 : if(m_fixture) { 121 : teardown_conditional(*m_fixture); 122 : } 123 : delete m_fixture; 124 : m_fixture = 0; 125 : } 126 : 127 : private: 128 : // Data members 129 : F* m_fixture; 130 : }; 131 : 132 : } // namespace ut_detail 133 : } // namespace unit_test 134 : } // namespace boost 135 : 136 : #include <boost/test/detail/enable_warnings.hpp> 137 : 138 : #endif // BOOST_TEST_TREE_GLOBAL_FIXTURE_HPP_091911GER 139 :