diff options
Diffstat (limited to 'boost/test/tools/detail/indirections.hpp')
-rw-r--r-- | boost/test/tools/detail/indirections.hpp | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/boost/test/tools/detail/indirections.hpp b/boost/test/tools/detail/indirections.hpp new file mode 100644 index 0000000000..429420f55a --- /dev/null +++ b/boost/test/tools/detail/indirections.hpp @@ -0,0 +1,94 @@ +// (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: 74248 $ +// +// Description : inidiration interfaces to support manipulators and message output +// *************************************************************************** + +#ifndef BOOST_TEST_TOOLS_DETAIL_INDIRECTIONS_HPP_112812GER +#define BOOST_TEST_TOOLS_DETAIL_INDIRECTIONS_HPP_112812GER + +// Boost.Test +#include <boost/test/tools/detail/fwd.hpp> + +#include <boost/test/tools/assertion_result.hpp> + +#include <boost/test/detail/suppress_warnings.hpp> + +//____________________________________________________________________________// + +namespace boost { +namespace test_tools { +namespace tt_detail { + +// ************************************************************************** // +// ************** assertion_evaluate indirection ************** // +// ************************************************************************** // + +template<typename E> +struct assertion_evaluate_t { + assertion_evaluate_t( E const& e ) : m_e( e ) {} + operator assertion_result() { return m_e.evaluate( true ); } + + E const& m_e; +}; + +//____________________________________________________________________________// + +template<typename E> +inline assertion_evaluate_t<E> +assertion_evaluate( E const& e ) { return assertion_evaluate_t<E>( e ); } + +//____________________________________________________________________________// + +template<typename E, typename T> +inline assertion_evaluate_t<E> +operator<<( assertion_evaluate_t<E> const& ae, T const& ) { return ae; } + +//____________________________________________________________________________// + +// ************************************************************************** // +// ************** assertion_text indirection ************** // +// ************************************************************************** // + +template<typename T> +inline unit_test::lazy_ostream const& +assertion_text( unit_test::lazy_ostream const& /*et*/, T const& m ) { return m; } + +//____________________________________________________________________________// + +inline unit_test::lazy_ostream const& +assertion_text( unit_test::lazy_ostream const& et, int ) { return et; } + +//____________________________________________________________________________// + +// ************************************************************************** // +// ************** assertion_evaluate indirection ************** // +// ************************************************************************** // + +struct assertion_type { + operator check_type() { return CHECK_MSG; } +}; + +//____________________________________________________________________________// + +template<typename T> +inline assertion_type +operator<<( assertion_type const& at, T const& ) { return at; } + +//____________________________________________________________________________// + +} // namespace tt_detail +} // namespace test_tools +} // namespace boost + +#include <boost/test/detail/enable_warnings.hpp> + +#endif // BOOST_TEST_TOOLS_DETAIL_INDIRECTIONS_HPP_112812GER |