Modify

#11854 closed Feature Requests (fixed)

Add fixture support in BOOST_DATA_TEST_CASE

Reported by: mikhail@… Owned by: rogeeff
Milestone: Boost 1.61.0 Component: test
Version: Boost 1.59.0 Severity: Problem
Keywords: Cc:

Description

Now BOOST_DATA_TEST_CASE doesn't support test fixture at all. There is the ability to support this:

#define BOOST_FIXTURE_DATA_TEST_CASE_IMPL( arity, test_name, F, dataset, params )  \
struct test_name : public F {                                                      \
    template<BOOST_PP_ENUM_PARAMS(arity, typename Arg)>                            \
    static void test_method( BOOST_DATA_TEST_CASE_PARAMS( params ) )               \
    {                                                                              \
        BOOST_TEST_CHECKPOINT('"' << #test_name << "\" fixture entry.");           \
        test_name t;                                                               \
        BOOST_TEST_CHECKPOINT('"' << #test_name << "\" entry.");                   \
        BOOST_TEST_CONTEXT( ""                                                     \
            BOOST_PP_SEQ_FOR_EACH(BOOST_DATA_TEST_CONTEXT, _, params))             \
        t._impl(BOOST_PP_SEQ_ENUM(params));                                        \
        BOOST_TEST_CHECKPOINT('"' << #test_name << "\" exit.");                    \
    }                                                                              \
private:                                                                           \
    template<BOOST_PP_ENUM_PARAMS(arity, typename Arg)>                            \
    void _impl(BOOST_DATA_TEST_CASE_PARAMS( params ));                             \
};                                                                                 \
                                                                                   \
BOOST_AUTO_TU_REGISTRAR( test_name )(                                              \
    boost::unit_test::data::ds_detail::make_test_case_gen<test_name>(              \
          BOOST_STRINGIZE( test_name ),                                            \
          __FILE__, __LINE__,                                                      \
          boost::unit_test::data::make(dataset) ),                                 \
    boost::unit_test::decorator::collector::instance() );                          \
                                                                                   \
template<BOOST_PP_ENUM_PARAMS(arity, typename Arg)>                                \
void test_name::_impl( BOOST_DATA_TEST_CASE_PARAMS( params ) )                     \
/**/

#define BOOST_AUTO_DATA_TEST_CASE_WITH_PARAMS( test_name, dataset, ... )          \
    BOOST_FIXTURE_DATA_TEST_CASE_IMPL( BOOST_PP_VARIADIC_SIZE(__VA_ARGS__),       \
                               test_name, BOOST_AUTO_TEST_CASE_FIXTURE, dataset,  \
                               BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__) )            \
/**/
#define BOOST_AUTO_DATA_TEST_CASE_NO_PARAMS( test_name, dataset )       \
    BOOST_AUTO_DATA_TEST_CASE_WITH_PARAMS( test_name, dataset, sample ) \
/**/

#if BOOST_PP_VARIADICS_MSVC

#define BOOST_AUTO_DATA_TEST_CASE( ... )                                     \
    BOOST_PP_CAT(                                                            \
    BOOST_PP_IIF(BOOST_PP_EQUAL(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__),2),      \
                     BOOST_AUTO_DATA_TEST_CASE_NO_PARAMS,                    \
                     BOOST_AUTO_DATA_TEST_CASE_WITH_PARAMS) (__VA_ARGS__), ) \
/**/
#else

#define BOOST_AUTO_DATA_TEST_CASE( ... )                                     \
    BOOST_PP_IIF(BOOST_PP_EQUAL(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__),2),      \
                     BOOST_AUTO_DATA_TEST_CASE_NO_PARAMS,                    \
                     BOOST_AUTO_DATA_TEST_CASE_WITH_PARAMS) (__VA_ARGS__)    \
/**/
#endif

Attachments (0)

Change History (2)

comment:1 Changed 17 months ago by renficiaud

  • Milestone changed from To Be Determined to Boost 1.61.0

comment:2 Changed 16 months ago by renficiaud

  • Resolution set to fixed
  • Status changed from new to closed

Merged to master rev 6a3a616

Add Comment

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain rogeeff.
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.