diff --git a/include/criterion/types.h b/include/criterion/types.h index 8265b58..a28d833 100644 --- a/include/criterion/types.h +++ b/include/criterion/types.h @@ -70,6 +70,15 @@ struct criterion_test_params { , length(vec.size()) , cleanup(cleanup) {} + + template + constexpr criterion_test_params(T (&arr)[N], + void (*cleanup)(criterion_test_params *) = nullptr) + : size(sizeof (arr[0])) + , params(static_cast(&arr)) + , length(N) + , cleanup(cleanup) + {} # endif }; diff --git a/samples/parameterized.cc b/samples/parameterized.cc index 3ae6c57..e6aaff9 100644 --- a/samples/parameterized.cc +++ b/samples/parameterized.cc @@ -28,7 +28,7 @@ ParameterizedTestParameters(params, multiple) { {5, 6}, }; - return cr_make_param_array(struct parameter_tuple, params, sizeof (params) / sizeof (struct parameter_tuple)); + return criterion_test_params(params); } ParameterizedTest(struct parameter_tuple *tup, params, multiple) {