2015-09-23 20:11:35 +02:00
|
|
|
#include <criterion/parameterized.h>
|
|
|
|
|
2016-09-05 21:32:57 +02:00
|
|
|
/* Basic usage */
|
2015-09-23 20:11:35 +02:00
|
|
|
|
2016-08-10 10:23:27 +02:00
|
|
|
ParameterizedTestParameters(params, simple) {
|
|
|
|
static int vals[] = { 1, 2, 3 };
|
2015-09-23 20:11:35 +02:00
|
|
|
|
2016-08-10 10:23:27 +02:00
|
|
|
return cr_make_param_array(int, vals, sizeof (vals) / sizeof (int));
|
2015-09-23 20:11:35 +02:00
|
|
|
}
|
|
|
|
|
2016-08-10 10:23:27 +02:00
|
|
|
ParameterizedTest(int *val, params, simple) {
|
|
|
|
cr_assert_fail("Parameter: %d", *val);
|
2015-09-23 20:11:35 +02:00
|
|
|
}
|
|
|
|
|
2016-09-05 21:32:57 +02:00
|
|
|
/* Multiple parameters must be coalesced in a single parameter */
|
2015-09-23 20:11:35 +02:00
|
|
|
|
|
|
|
struct parameter_tuple {
|
|
|
|
int i;
|
|
|
|
double d;
|
|
|
|
};
|
|
|
|
|
|
|
|
ParameterizedTestParameters(params, multiple) {
|
|
|
|
static struct parameter_tuple params[] = {
|
2016-09-05 21:32:57 +02:00
|
|
|
{ 1, 2 },
|
|
|
|
{ 3, 4 },
|
|
|
|
{ 5, 6 },
|
2015-09-23 20:11:35 +02:00
|
|
|
};
|
|
|
|
|
2015-09-23 21:35:05 +02:00
|
|
|
return criterion_test_params(params);
|
2015-09-23 20:11:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
ParameterizedTest(struct parameter_tuple *tup, params, multiple) {
|
|
|
|
cr_assert_fail("Parameters: (%d, %f)", tup->i, tup->d);
|
|
|
|
}
|
|
|
|
|
2016-09-05 21:32:57 +02:00
|
|
|
/* Using dynamically generated parameters */
|
2015-09-23 20:11:35 +02:00
|
|
|
|
2016-09-05 21:32:57 +02:00
|
|
|
/* you **MUST** use new_obj, new_arr, delete_obj, delete_arr instead of
|
|
|
|
the new, new[], delete and delete[] operators (respectively) to allocate and
|
|
|
|
deallocate dynamic memory in parameters, otherwise this will crash. */
|
2015-09-23 20:11:35 +02:00
|
|
|
|
2016-09-05 21:32:57 +02:00
|
|
|
/* the criterion::allocator<T> allocator may be used with STL containers to
|
|
|
|
allocate objects with the functions described above. */
|
2015-09-23 20:11:35 +02:00
|
|
|
|
|
|
|
using criterion::new_obj;
|
|
|
|
using criterion::new_arr;
|
|
|
|
using criterion::delete_obj;
|
|
|
|
using criterion::delete_arr;
|
|
|
|
|
|
|
|
struct parameter_tuple_dyn {
|
|
|
|
int i;
|
2016-09-05 21:32:57 +02:00
|
|
|
std::unique_ptr<double, decltype (criterion::free)> d;
|
2015-09-23 20:11:35 +02:00
|
|
|
|
|
|
|
parameter_tuple_dyn() : i(0), d(nullptr, criterion::free) {}
|
|
|
|
parameter_tuple_dyn(int i, double *d) : i(i), d(d, criterion::free) {}
|
|
|
|
};
|
|
|
|
|
|
|
|
ParameterizedTestParameters(params, cleanup) {
|
|
|
|
static criterion::parameters<parameter_tuple_dyn> params;
|
|
|
|
|
|
|
|
params.push_back(parameter_tuple_dyn(1, new_obj<double>(2)));
|
|
|
|
params.push_back(parameter_tuple_dyn(3, new_obj<double>(4)));
|
|
|
|
params.push_back(parameter_tuple_dyn(5, new_obj<double>(6)));
|
|
|
|
|
2016-09-05 21:32:57 +02:00
|
|
|
/* A criterion::parameters<T> can be returned in place of a
|
|
|
|
criterion_test_params. */
|
2015-09-23 20:11:35 +02:00
|
|
|
return params;
|
|
|
|
}
|
|
|
|
|
2016-09-05 21:32:57 +02:00
|
|
|
ParameterizedTest(parameter_tuple_dyn * tup, params, cleanup) {
|
2015-09-23 20:11:35 +02:00
|
|
|
cr_assert_fail("Parameters: (%d, %f)", tup->i, *tup->d);
|
|
|
|
}
|