diff --git a/include/criterion/parameterized.h b/include/criterion/parameterized.h index 135fbe4..5005e3e 100644 --- a/include/criterion/parameterized.h +++ b/include/criterion/parameterized.h @@ -42,7 +42,7 @@ criterion_test_params(sizeof (Type), (Array), __VA_ARGS__) # else # define cr_make_param_array(Type, Array, ...) \ - (struct criterion_test_params) { sizeof (Type), (void*)(Array), __VA_ARGS__ } + (struct criterion_test_params) { .size = sizeof (Type), (void*)(Array), __VA_ARGS__ } # endif #endif /* !CRITERION_PARAMETERIZED_H_ */ diff --git a/include/criterion/types.h b/include/criterion/types.h index 93a54c9..7e98bc8 100644 --- a/include/criterion/types.h +++ b/include/criterion/types.h @@ -49,6 +49,7 @@ struct criterion_test_params { : size(size) , params(params) , length(length) + , cleanup(nullptr) {} constexpr criterion_test_params(size_t size, void *params, size_t length, diff --git a/samples/parameterized.c b/samples/parameterized.c index 9c6c863..6c58b9a 100644 --- a/samples/parameterized.c +++ b/samples/parameterized.c @@ -42,33 +42,20 @@ ParameterizedTest(struct parameter_tuple *tup, params, multiple) { // or this will fail on windows void free_params(struct criterion_test_params *crp) { - struct parameter_tuple_dyn *tuples = crp->params; - for (size_t i = 0; i < crp->length; ++i) { - struct parameter_tuple_dyn *tup = &tuples[i]; - free(tup->d); - } free(crp->params); } -double *gen_double(double d) { - double *ptr = malloc(sizeof(double)); - printf("%p\n", ptr); - fflush(NULL); - *ptr = d; - return ptr; -} - ParameterizedTestParameters(params, cleanup) { const size_t nb_tuples = 3; - struct parameter_tuple_dyn *params = malloc(sizeof(struct parameter_tuple_dyn) * nb_tuples); - params[0] = (struct parameter_tuple_dyn) { 1, gen_double(2) }; - params[1] = (struct parameter_tuple_dyn) { 3, gen_double(4) }; - params[2] = (struct parameter_tuple_dyn) { 5, gen_double(6) }; + struct parameter_tuple *params = malloc(sizeof(struct parameter_tuple) * nb_tuples); + params[0] = (struct parameter_tuple) { 1, 2 }; + params[1] = (struct parameter_tuple) { 3, 4 }; + params[2] = (struct parameter_tuple) { 5, 6 }; - return cr_make_param_array(struct parameter_tuple_dyn, params, nb_tuples, free_params); + return cr_make_param_array(struct parameter_tuple, params, nb_tuples, free_params); } -ParameterizedTest(struct parameter_tuple_dyn *tup, params, cleanup) { - cr_assert_fail("Parameters: (%d, %p)", tup->i, tup->d); +ParameterizedTest(struct parameter_tuple *tup, params, cleanup) { + cr_assert_fail("Parameters: (%d, %f)", tup->i, tup->d); }