diff options
Diffstat (limited to 'boost/test/tools/context.hpp')
-rw-r--r-- | boost/test/tools/context.hpp | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/boost/test/tools/context.hpp b/boost/test/tools/context.hpp index 71650065ef..e5d6625e12 100644 --- a/boost/test/tools/context.hpp +++ b/boost/test/tools/context.hpp @@ -17,6 +17,20 @@ // Boost.Test #include <boost/test/utils/lazy_ostream.hpp> +#include <boost/test/detail/pp_variadic.hpp> + +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/repetition/enum_binary_params.hpp> +#include <boost/preprocessor/repetition/repeat_from_to.hpp> + +#include <boost/preprocessor/variadic/to_seq.hpp> +#include <boost/preprocessor/variadic/size.hpp> +#include <boost/preprocessor/cat.hpp> +#include <boost/preprocessor/seq/for_each_i.hpp> +#include <boost/preprocessor/seq/for_each.hpp> +#include <boost/preprocessor/seq/enum.hpp> +#include <boost/preprocessor/control/iif.hpp> +#include <boost/preprocessor/comparison/equal.hpp> #include <boost/test/detail/suppress_warnings.hpp> @@ -47,13 +61,30 @@ private: ::boost::unit_test::framework::add_context( BOOST_TEST_LAZY_MSG( context_descr ) , false ) \ /**/ +#define BOOST_TEST_INFO_SCOPE( context_descr ) \ + ::boost::test_tools::tt_detail::context_frame BOOST_JOIN( context_frame_, __LINE__ ) = \ + ::boost::test_tools::tt_detail::context_frame(BOOST_TEST_LAZY_MSG( context_descr ) ) \ +/**/ + //____________________________________________________________________________// -#define BOOST_TEST_CONTEXT( context_descr ) \ - if( ::boost::test_tools::tt_detail::context_frame BOOST_JOIN( context_frame_, __LINE__ ) = \ - ::boost::test_tools::tt_detail::context_frame( BOOST_TEST_LAZY_MSG( context_descr ) ) ) \ + +#define BOOST_CONTEXT_PARAM(r, ctx, i, context_descr) \ + if( ::boost::test_tools::tt_detail::context_frame BOOST_PP_CAT(ctx, i) = \ + ::boost::test_tools::tt_detail::context_frame(BOOST_TEST_LAZY_MSG( context_descr ) ) ) \ /**/ +#define BOOST_CONTEXT_PARAMS( params ) \ + BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONTEXT_PARAM, \ + BOOST_JOIN( context_frame_, __LINE__ ), \ + params) \ +/**/ + +#define BOOST_TEST_CONTEXT( ... ) \ + BOOST_CONTEXT_PARAMS( BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__) ) \ +/**/ + + //____________________________________________________________________________// } // namespace tt_detail |