// (C) Copyright Gennadiy Rozental 2011-2014. // Distributed under 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$ // // Version : $Revision: 74640 $ // // Description : defines fixture interface and object makers // *************************************************************************** #ifndef BOOST_TEST_TREE_FIXTURE_HPP_100311GER #define BOOST_TEST_TREE_FIXTURE_HPP_100311GER // Boost.Test #include // Boost #include #include #include #include //____________________________________________________________________________// namespace boost { namespace unit_test { // ************************************************************************** // // ************** test_unit_fixture ************** // // ************************************************************************** // class BOOST_TEST_DECL test_unit_fixture { public: virtual ~test_unit_fixture() {} // Fixture interface virtual void setup() = 0; virtual void teardown() = 0; }; typedef shared_ptr test_unit_fixture_ptr; // ************************************************************************** // // ************** class_based_fixture ************** // // ************************************************************************** // template class class_based_fixture : public test_unit_fixture { public: // Constructor explicit class_based_fixture( Arg const& arg ) : m_inst(), m_arg( arg ) {} private: // Fixture interface virtual void setup() { m_inst.reset( new F( m_arg ) ); } virtual void teardown() { m_inst.reset(); } // Data members scoped_ptr m_inst; Arg m_arg; }; //____________________________________________________________________________// template class class_based_fixture : public test_unit_fixture { public: // Constructor class_based_fixture() : m_inst( 0 ) {} private: // Fixture interface virtual void setup() { m_inst.reset( new F ); } virtual void teardown() { m_inst.reset(); } // Data members scoped_ptr m_inst; }; //____________________________________________________________________________// // ************************************************************************** // // ************** function_based_fixture ************** // // ************************************************************************** // class function_based_fixture : public test_unit_fixture { public: // Constructor function_based_fixture( boost::function const& setup_, boost::function const& teardown_ ) : m_setup( setup_ ) , m_teardown( teardown_ ) { } private: // Fixture interface virtual void setup() { if( m_setup ) m_setup(); } virtual void teardown() { if( m_teardown ) m_teardown(); } // Data members boost::function m_setup; boost::function m_teardown; }; } // namespace unit_test } // namespace boost #include #endif // BOOST_TEST_TREE_FIXTURE_HPP_100311GER