@@ -115,7 +115,7 @@ extern "C" {
115
115
/**
116
116
* @brief Development version.
117
117
*/
118
- #define CUTEST_VERSION_PREREL 5
118
+ #define CUTEST_VERSION_PREREL 6
119
119
120
120
/**
121
121
* @brief Ensure the api is exposed as C function.
@@ -218,18 +218,15 @@ extern "C" {
218
218
#define TEST_PARAMETERIZED_DEFINE (fixture , test , TYPE , ...) \
219
219
static void cutest_usertest_parameterized_register_##fixture##_##test(void (*cb)(TYPE*, unsigned long)) {\
220
220
static TYPE s_parameterized_userdata[] = { __VA_ARGS__ };\
221
- static cutest_case_t s_tests[sizeof(s_parameterized_userdata) / sizeof(s_parameterized_userdata[0])];\
222
- const unsigned long number_of_parameterized_data = sizeof(s_tests) / sizeof(s_tests[0]);\
221
+ static cutest_case_t s_tests[TEST_ARRAY_SIZE(s_parameterized_userdata)];\
223
222
unsigned long i = 0;\
224
- for (i = 0; i < number_of_parameterized_data ; i++) {\
223
+ for (i = 0; i < TEST_ARRAY_SIZE(s_tests) ; i++) {\
225
224
cutest_case_init(&s_tests[i], #fixture, #test,\
226
225
s_cutest_fixture_setup_##fixture,\
227
226
s_cutest_fixture_teardown_##fixture,\
228
227
(void(*)(void*, unsigned long))cb);\
229
- s_tests[i].parameterized.type_name = #TYPE;\
230
- s_tests[i].parameterized.test_data_cstr = TEST_STRINGIFY(__VA_ARGS__);\
231
- s_tests[i].parameterized.param_data = s_parameterized_userdata;\
232
- s_tests[i].parameterized.param_idx = i;\
228
+ cutest_case_convert_parameterized(&s_tests[i],\
229
+ #TYPE, TEST_STRINGIFY(__VA_ARGS__), (void*)s_parameterized_userdata, i);\
233
230
cutest_register_case(&s_tests[i]);\
234
231
}\
235
232
}\
@@ -270,11 +267,7 @@ extern "C" {
270
267
TEST_C_API void u_cutest_body_##fixture##_##test(\
271
268
u_cutest_parameterized_type_##fixture##_##test*, unsigned long);\
272
269
TEST_INITIALIZER(cutest_usertest_interface_##fixture##_##test) {\
273
- static unsigned char s_token = 0;\
274
- if (s_token == 0) {\
275
- s_token = 1;\
276
- cutest_usertest_parameterized_register_##fixture##_##test(u_cutest_body_##fixture##_##test);\
277
- }\
270
+ cutest_usertest_parameterized_register_##fixture##_##test(u_cutest_body_##fixture##_##test);\
278
271
}\
279
272
TEST_C_API void u_cutest_body_##fixture##_##test(\
280
273
u_cutest_parameterized_type_##fixture##_##test* _test_parameterized_data,\
@@ -444,6 +437,8 @@ extern "C" {
444
437
#define TEST_JOIN (a , b ) TEST_JOIN2(a, b)
445
438
#define TEST_JOIN2 (a , b ) a##b
446
439
440
+ #define TEST_ARRAY_SIZE (arr ) (sizeof(arr) / sizeof(arr[0]))
441
+
447
442
/** @endcond */
448
443
449
444
/**
@@ -714,6 +709,17 @@ typedef struct cutest_case
714
709
void cutest_case_init (cutest_case_t * tc , const char * fixture_name , const char * case_name ,
715
710
cutest_test_case_setup_fn setup , cutest_test_case_teardown_fn teardown , cutest_test_case_body_fn body );
716
711
712
+ /**
713
+ * @brief Convert normal test case to parameterized test case.
714
+ * @param[in,out] tc - Test case.
715
+ * @param[in] type - User type name.
716
+ * @param[in] commit - The C string of user test data.
717
+ * @param[in] data - Data passed to #cutest_case_t::stage::body
718
+ * @param[in] size - Index passed to #cutest_case_t::stage::body
719
+ */
720
+ void cutest_case_convert_parameterized (cutest_case_t * tc , const char * type ,
721
+ const char * commit , void * data , unsigned long size );
722
+
717
723
/**
718
724
* @brief Register test case.
719
725
*
0 commit comments