test: add a litest_with_parameters helper macro

Magic for loop that takes care of the creation and unref for us,
hopefully improving readability a bit.

Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1138>
This commit is contained in:
Peter Hutterer 2025-02-11 14:44:48 +10:00
parent b566d64c17
commit d9f121b4d1
9 changed files with 29 additions and 55 deletions

View file

@ -610,6 +610,11 @@ _litest_parameters_new(const char *name, ...);
#define litest_parameters_new(name_, ...) \
_litest_parameters_new(name_, __VA_ARGS__, NULL)
#define litest_with_parameters(params_, ...) \
for (struct litest_parameters *params_ = litest_parameters_new(__VA_ARGS__); \
params_; \
params_ = litest_parameters_unref(params_))
struct litest_parameters_permutation_value {
struct list link;
char name[128];

View file

@ -211,11 +211,9 @@ TEST_COLLECTION(log)
litest_add_deviceless(log_handler_NULL);
litest_add_no_device(log_priority);
{
struct litest_parameters *params = litest_parameters_new("axis", 's', 2, "ABS_X", "ABS_Y");
litest_with_parameters(params, "axis", 's', 2, "ABS_X", "ABS_Y") {
/* mtdev clips to axis ranges */
litest_add_parametrized(log_axisrange_warning, LITEST_TOUCH, LITEST_PROTOCOL_A, params);
litest_add_parametrized(log_axisrange_warning, LITEST_TOUCHPAD, LITEST_ANY, params);
litest_parameters_unref(params);
}
}

View file

@ -3760,12 +3760,9 @@ TEST_COLLECTION(pointer)
litest_add(pointer_motion_relative, LITEST_RELATIVE, LITEST_POINTINGSTICK);
litest_add_for_device(pointer_motion_relative_zero, LITEST_MOUSE);
{
struct litest_parameters *params = litest_parameters_new("direction", 's', 8,
"N", "E", "S", "W",
"NE", "SE", "SW", "NW");
litest_with_parameters(params,
"direction", 's', 8, "N", "E", "S", "W", "NE", "SE", "SW", "NW") {
litest_add_parametrized(pointer_motion_relative_min_decel, LITEST_RELATIVE, LITEST_POINTINGSTICK, params);
litest_parameters_unref(params);
}
litest_add(pointer_motion_absolute, LITEST_ABSOLUTE, LITEST_ANY);
litest_add(pointer_motion_unaccel, LITEST_RELATIVE, LITEST_ANY);
@ -3776,10 +3773,8 @@ TEST_COLLECTION(pointer)
litest_add(pointer_recover_from_lost_button_count, LITEST_BUTTON, LITEST_CLICKPAD);
litest_add(pointer_scroll_wheel, LITEST_WHEEL, LITEST_TABLET);
litest_add(pointer_scroll_wheel_hires, LITEST_WHEEL, LITEST_TABLET);
{
struct litest_parameters *params = litest_parameters_new("axis", 's', 2, "vertical", "horizontal");
litest_with_parameters(params, "axis", 's', 2, "vertical", "horizontal") {
litest_add_parametrized(pointer_scroll_wheel_hires_send_only_lores, LITEST_WHEEL, LITEST_TABLET, params);
litest_parameters_unref(params);
}
litest_add(pointer_scroll_wheel_inhibit_small_deltas, LITEST_WHEEL, LITEST_TABLET);
litest_add(pointer_scroll_wheel_inhibit_dir_change, LITEST_WHEEL, LITEST_TABLET);
@ -3848,10 +3843,8 @@ TEST_COLLECTION(pointer)
litest_add(middlebutton_device_remove_while_down, LITEST_BUTTON, LITEST_CLICKPAD);
litest_add(middlebutton_device_remove_while_one_is_down, LITEST_BUTTON, LITEST_CLICKPAD);
{
struct litest_parameters *params = litest_parameters_new("axis", 's', 2, "ABS_X", "ABS_Y");
litest_with_parameters(params, "axis", 's', 2, "ABS_X", "ABS_Y") {
litest_add_parametrized(pointer_absolute_initial_state, LITEST_ABSOLUTE, LITEST_ANY, params);
litest_parameters_unref(params);
}
litest_add(pointer_time_usec, LITEST_RELATIVE, LITEST_ANY);

View file

@ -1443,9 +1443,7 @@ TEST_COLLECTION(switch)
litest_add(switch_has_tablet_mode_switch, LITEST_SWITCH, LITEST_ANY);
litest_add(switch_not_down_on_init, LITEST_SWITCH, LITEST_ANY);
{
struct litest_parameters *params = litest_parameters_new("switch", 's', 2, "lid", "tablet_mode");
litest_with_parameters(params, "switch", 's', 2, "lid", "tablet_mode") {
litest_add_parametrized(switch_toggle, LITEST_SWITCH, LITEST_ANY, params);
litest_add_parametrized(switch_toggle_double, LITEST_SWITCH, LITEST_ANY, params);
litest_add_parametrized(switch_down_on_init, LITEST_SWITCH, LITEST_ANY, params);
@ -1459,8 +1457,6 @@ TEST_COLLECTION(switch)
litest_add_parametrized_no_device(switch_suspend_with_keyboard, params);
litest_add_parametrized_no_device(switch_suspend_with_touchpad, params);
litest_parameters_unref(params);
}
litest_add(lid_open_on_key, LITEST_SWITCH, LITEST_ANY);

View file

@ -7104,10 +7104,8 @@ TEST_COLLECTION(tablet)
litest_add(tip_down_motion, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_up_motion, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_down_up_eraser, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
{
struct litest_parameters *params = litest_parameters_new("axis", 's', 2, "ABS_X", "ABS_Y");
litest_with_parameters(params, "axis", 's', 2, "ABS_X", "ABS_Y") {
litest_add_parametrized(tip_up_motion_one_axis, LITEST_TABLET|LITEST_HOVER, LITEST_ANY, params);
litest_parameters_unref(params);
}
litest_add(tip_state_proximity, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
litest_add(tip_state_axis, LITEST_TABLET|LITEST_HOVER, LITEST_ANY);
@ -7120,10 +7118,8 @@ TEST_COLLECTION(tablet)
litest_add(tilt_not_available, LITEST_TABLET, LITEST_TILT);
litest_add(tilt_x, LITEST_TABLET|LITEST_TILT, LITEST_ANY);
litest_add(tilt_y, LITEST_TABLET|LITEST_TILT, LITEST_ANY);
{
struct litest_parameters *params = litest_parameters_new("tilt", 's', 3, "minimum", "maximum", "center");
litest_with_parameters(params, "tilt", 's', 3, "minimum", "maximum", "center") {
litest_add_parametrized(tilt_fixed_points, LITEST_TABLET|LITEST_TILT, LITEST_ANY, params);
litest_parameters_unref(params);
}
litest_add(pad_buttons_ignored, LITEST_TABLET, LITEST_TOTEM);
litest_add_for_device(stylus_buttons, LITEST_WACOM_CINTIQ_PRO16_PEN);
@ -7146,11 +7142,10 @@ TEST_COLLECTION(tablet)
litest_add(tablet_area_has_rectangle, LITEST_TABLET, LITEST_ANY);
litest_add(tablet_area_set_rectangle_invalid, LITEST_TABLET, LITEST_ANY);
{
struct litest_parameters *params = litest_parameters_new("axis", 's', 2, "vertical", "horizontal",
"direction", 's', 2, "down", "up");
litest_with_parameters(params,
"axis", 's', 2, "vertical", "horizontal",
"direction", 's', 2, "down", "up") {
litest_add_parametrized(tablet_area_set_rectangle, LITEST_TABLET, LITEST_ANY, params);
litest_parameters_unref(params);
}
litest_add(tablet_area_set_rectangle_move_outside, LITEST_TABLET, LITEST_ANY);
litest_add(tablet_area_set_rectangle_move_outside_to_inside, LITEST_TABLET, LITEST_ANY);
@ -7200,10 +7195,8 @@ TEST_COLLECTION(tablet)
litest_add_for_device(huion_static_btn_tool_pen, LITEST_HUION_TABLET);
litest_add_for_device(huion_static_btn_tool_pen_no_timeout_during_usage, LITEST_HUION_TABLET);
{
struct litest_parameters *params = litest_parameters_new("btn_tool_pen_timeout", 'b');
litest_with_parameters(params, "btn_tool_pen_timeout", 'b') {
litest_add_parametrized_for_device(huion_static_btn_tool_pen_disable_quirk_on_prox_out, LITEST_HUION_TABLET, params);
litest_parameters_unref(params);
}
litest_add_for_device(tablet_smoothing, LITEST_WACOM_HID4800_PEN);
@ -7217,18 +7210,17 @@ TEST_COLLECTION(tablet_left_handed)
litest_add_for_device(left_handed_artpen_rotation, LITEST_WACOM_INTUOS);
litest_add_for_device(no_left_handed, LITEST_WACOM_CINTIQ);
{
struct litest_parameters *params = litest_parameters_new("tablet_from", 'b',
"touch_from", 'b',
"tablet_to", 'b',
"touch_to", 'b');
litest_with_parameters(params,
"tablet_from", 'b',
"touch_from", 'b',
"tablet_to", 'b',
"touch_to", 'b') {
litest_add_parametrized(tablet_rotation_left_handed, LITEST_TABLET, LITEST_ANY, params);
litest_add_parametrized(tablet_rotation_left_handed_configuration, LITEST_TABLET, LITEST_ANY, params);
litest_add_parametrized(tablet_rotation_left_handed_while_in_prox, LITEST_TABLET, LITEST_ANY, params);
litest_add_parametrized(tablet_rotation_left_handed_while_touch_down, LITEST_TABLET, LITEST_ANY, params);
litest_add_parametrized(tablet_rotation_left_handed_add_touchpad, LITEST_TABLET, LITEST_ANY, params);
litest_add_parametrized(tablet_rotation_left_handed_add_tablet, LITEST_TOUCHPAD, LITEST_ANY, params);
litest_parameters_unref(params);
}

View file

@ -1366,10 +1366,8 @@ TEST_COLLECTION(touch)
litest_add(touch_protocol_a_touch, LITEST_PROTOCOL_A, LITEST_ANY);
litest_add(touch_protocol_a_2fg_touch, LITEST_PROTOCOL_A, LITEST_ANY);
{
struct litest_parameters *params = litest_parameters_new("axis", 's', 2, "ABS_X", "ABS_Y");
litest_with_parameters(params, "axis", 's', 2, "ABS_X", "ABS_Y") {
litest_add_parametrized(touch_initial_state, LITEST_TOUCH, LITEST_PROTOCOL_A, params);
litest_parameters_unref(params);
}
litest_add(touch_time_usec, LITEST_TOUCH, LITEST_TOUCHPAD);

View file

@ -2277,15 +2277,13 @@ TEST_COLLECTION(touchpad_buttons)
litest_add(touchpad_1fg_clickfinger, LITEST_CLICKPAD, LITEST_ANY);
litest_add(touchpad_1fg_clickfinger_no_touch, LITEST_CLICKPAD, LITEST_ANY);
{
struct litest_parameters *params = litest_parameters_new("map", 's', 2, "LRM", "LMR");
litest_with_parameters(params, "map", 's', 2, "LRM", "LMR") {
litest_add_parametrized(touchpad_2fg_clickfinger, LITEST_CLICKPAD, LITEST_ANY, params);
litest_add_parametrized(touchpad_3fg_clickfinger, LITEST_CLICKPAD, LITEST_ANY, params);
litest_add_parametrized(touchpad_3fg_clickfinger_btntool, LITEST_CLICKPAD, LITEST_ANY, params);
litest_add_parametrized(touchpad_2fg_clickfinger_distance, LITEST_CLICKPAD, LITEST_ANY, params);
litest_add_parametrized(touchpad_3fg_clickfinger_distance, LITEST_CLICKPAD, LITEST_ANY, params);
litest_add_parametrized(touchpad_3fg_clickfinger_distance_btntool, LITEST_CLICKPAD, LITEST_ANY, params);
litest_parameters_unref(params);
}
litest_add_for_device(touchpad_2fg_clickfinger_bottom, LITEST_SYNAPTICS_TOPBUTTONPAD);

View file

@ -5749,15 +5749,13 @@ TEST_COLLECTION(touchpad_tap)
litest_add(touchpad_5fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
litest_add(touchpad_5fg_tap_quickrelease, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
{
struct litest_parameters *params = litest_parameters_new("map", 's', 2, "LRM", "LMR");
litest_with_parameters(params, "map", 's', 2, "LRM", "LMR") {
litest_add_parametrized(touchpad_2fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT, params);
litest_add_parametrized(touchpad_2fg_tap_inverted, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, params);
litest_add_parametrized(touchpad_3fg_tap_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, params);
litest_add_parametrized(touchpad_3fg_tap_btntool_inverted, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, params);
litest_add_parametrized_for_device(touchpad_3fg_tap_btntool_pointerjump, LITEST_SYNAPTICS_TOPBUTTONPAD, params);
litest_add_parametrized(touchpad_3fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, params);
litest_parameters_unref(params);
}
litest_add_ranged(touchpad_move_after_touch, LITEST_TOUCHPAD, LITEST_ANY, &range_multifinger);

View file

@ -7359,10 +7359,8 @@ TEST_COLLECTION(touchpad)
litest_add_for_device(touchpad_trackpoint_buttons_2fg_scroll, LITEST_SYNAPTICS_TRACKPOINT_BUTTONS);
litest_add_for_device(touchpad_trackpoint_no_trackpoint, LITEST_SYNAPTICS_TRACKPOINT_BUTTONS);
{
struct litest_parameters *params = litest_parameters_new("axis", 's', 2, "ABS_X", "ABS_Y");
litest_with_parameters(params, "axis", 's', 2, "ABS_X", "ABS_Y") {
litest_add_parametrized(touchpad_initial_state, LITEST_TOUCHPAD, LITEST_ANY, params);
litest_parameters_unref(params);
}
litest_add_ranged(touchpad_fingers_down_before_init, LITEST_TOUCHPAD, LITEST_ANY, &five_fingers);
@ -7407,13 +7405,11 @@ TEST_COLLECTION(touchpad)
litest_add(touchpad_speed_ignore_finger_edgescroll, LITEST_CLICKPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
litest_add_for_device(touchpad_speed_ignore_hovering_finger, LITEST_BCM5974);
{
struct litest_parameters *params = litest_parameters_new("mode", 's', 4,
"external_mouse", "sendevents",
"lid", "tabletmode");
litest_with_parameters(params, "mode", 's', 4,
"external_mouse", "sendevents",
"lid", "tabletmode") {
litest_add_parametrized(touchpad_suspend_abba, LITEST_TOUCHPAD, LITEST_ANY, params);
litest_add_parametrized(touchpad_suspend_abab, LITEST_TOUCHPAD, LITEST_ANY, params);
litest_parameters_unref(params);
}
/* Happens on the "Wacom Intuos Pro M Finger" but our test device