This change adds strict axis_replacemnt and litest_touch_move_extended and litest_touch_down_extended to simulate changes to other axes during touch down and move events.
Signed-off-by: Andreas Pokorny <andreas.poko...@canonical.com> --- test/litest.c | 95 +++++++++++++++++++++++++++++++++++++++++++++++------------ test/litest.h | 16 ++++++++++ 2 files changed, 92 insertions(+), 19 deletions(-) diff --git a/test/litest.c b/test/litest.c index 82df550..f47ae89 100644 --- a/test/litest.c +++ b/test/litest.c @@ -1234,10 +1234,26 @@ litest_event(struct litest_device *d, unsigned int type, litest_assert_int_eq(ret, 0); } +static int32_t +axis_replacement_value(struct axis_replacement *axes, + int32_t evcode) +{ + struct axis_replacement *axis = axes; + + while (axis->evcode != -1) { + if (axis->evcode == evcode) + return axis->value; + axis++; + } + + return -1; +} + int litest_auto_assign_value(struct litest_device *d, const struct input_event *ev, int slot, double x, double y, + struct axis_replacement *axes, bool touching) { static int tracking_id; @@ -1264,6 +1280,10 @@ litest_auto_assign_value(struct litest_device *d, case ABS_MT_DISTANCE: value = touching ? 0 : 1; break; + default: + if (axes) + value = axis_replacement_value(axes, ev->code); + break; } return value; @@ -1281,8 +1301,12 @@ send_btntool(struct litest_device *d) } static void -litest_slot_start(struct litest_device *d, unsigned int slot, - double x, double y, bool touching) +litest_slot_start(struct litest_device *d, + unsigned int slot, + double x, + double y, + struct axis_replacement *axes, + bool touching) { struct input_event *ev; @@ -1303,6 +1327,7 @@ litest_slot_start(struct litest_device *d, unsigned int slot, slot, x, y, + axes, touching); litest_event(d, ev->type, ev->code, value); @@ -1311,10 +1336,22 @@ litest_slot_start(struct litest_device *d, unsigned int slot, } void -litest_touch_down(struct litest_device *d, unsigned int slot, - double x, double y) +litest_touch_down(struct litest_device *d, + unsigned int slot, + double x, + double y) { - litest_slot_start(d, slot, x, y, 1); + litest_slot_start(d, slot, x, y, NULL, true); +} + +void +litest_touch_down_extended(struct litest_device *d, + unsigned int slot, + double x, + double y, + struct axis_replacement *axes) +{ + litest_slot_start(d, slot, x, y, axes, true); } void @@ -1347,6 +1384,7 @@ litest_touch_up(struct litest_device *d, unsigned int slot) slot, 0, 0, + NULL, false); litest_event(d, ev->type, ev->code, value); ev++; @@ -1354,8 +1392,12 @@ litest_touch_up(struct litest_device *d, unsigned int slot) } static void -litest_slot_move(struct litest_device *d, unsigned int slot, - double x, double y, bool touching) +litest_slot_move(struct litest_device *d, + unsigned int slot, + double x, + double y, + struct axis_replacement *axes, + bool touching) { struct input_event *ev; @@ -1371,6 +1413,7 @@ litest_slot_move(struct litest_device *d, unsigned int slot, slot, x, y, + axes, touching); litest_event(d, ev->type, ev->code, value); ev++; @@ -1378,10 +1421,22 @@ litest_slot_move(struct litest_device *d, unsigned int slot, } void -litest_touch_move(struct litest_device *d, unsigned int slot, - double x, double y) +litest_touch_move(struct litest_device *d, + unsigned int slot, + double x, + double y) +{ + litest_slot_move(d, slot, x, y, NULL, true); +} + +void +litest_touch_move_extended(struct litest_device *d, + unsigned int slot, + double x, + double y, + struct axis_replacement *axes) { - litest_slot_move(d, slot, x, y, true); + litest_slot_move(d, slot, x, y, axes, true); } void @@ -1427,10 +1482,12 @@ litest_touch_move_two_touches(struct litest_device *d, } void -litest_hover_start(struct litest_device *d, unsigned int slot, - double x, double y) +litest_hover_start(struct litest_device *d, + unsigned int slot, + double x, + double y) { - litest_slot_start(d, slot, x, y, 0); + litest_slot_start(d, slot, x, y, NULL, 0); } void @@ -1459,7 +1516,7 @@ litest_hover_end(struct litest_device *d, unsigned int slot) ev = up; while (ev && (int16_t)ev->type != -1 && (int16_t)ev->code != -1) { - int value = litest_auto_assign_value(d, ev, slot, 0, 0, 0); + int value = litest_auto_assign_value(d, ev, slot, 0, 0, NULL, false); litest_event(d, ev->type, ev->code, value); ev++; } @@ -1469,7 +1526,7 @@ void litest_hover_move(struct litest_device *d, unsigned int slot, double x, double y) { - litest_slot_move(d, slot, x, y, false); + litest_slot_move(d, slot, x, y, NULL, false); } void @@ -2154,11 +2211,11 @@ send_abs_xy(struct litest_device *d, double x, double y) e.type = EV_ABS; e.code = ABS_X; e.value = LITEST_AUTO_ASSIGN; - val = litest_auto_assign_value(d, &e, 0, x, y, true); + val = litest_auto_assign_value(d, &e, 0, x, y, NULL, true); litest_event(d, EV_ABS, ABS_X, val); e.code = ABS_Y; - val = litest_auto_assign_value(d, &e, 0, x, y, true); + val = litest_auto_assign_value(d, &e, 0, x, y, NULL, true); litest_event(d, EV_ABS, ABS_Y, val); } @@ -2171,12 +2228,12 @@ send_abs_mt_xy(struct litest_device *d, double x, double y) e.type = EV_ABS; e.code = ABS_MT_POSITION_X; e.value = LITEST_AUTO_ASSIGN; - val = litest_auto_assign_value(d, &e, 0, x, y, true); + val = litest_auto_assign_value(d, &e, 0, x, y, NULL, true); litest_event(d, EV_ABS, ABS_MT_POSITION_X, val); e.code = ABS_MT_POSITION_Y; e.value = LITEST_AUTO_ASSIGN; - val = litest_auto_assign_value(d, &e, 0, x, y, true); + val = litest_auto_assign_value(d, &e, 0, x, y, NULL, true); litest_event(d, EV_ABS, ABS_MT_POSITION_Y, val); } diff --git a/test/litest.h b/test/litest.h index b08ac40..583eae4 100644 --- a/test/litest.h +++ b/test/litest.h @@ -176,6 +176,11 @@ struct litest_device { char *udev_rule_file; }; +struct axis_replacement { + int32_t evcode; + int32_t value; +}; + /* A loop range, resolves to: for (i = lower; i < upper; i++) */ @@ -284,16 +289,27 @@ void litest_event(struct litest_device *t, int litest_auto_assign_value(struct litest_device *d, const struct input_event *ev, int slot, double x, double y, + struct axis_replacement *axes, bool touching); void litest_touch_up(struct litest_device *d, unsigned int slot); void litest_touch_move(struct litest_device *d, unsigned int slot, double x, double y); +void litest_touch_move_extended(struct litest_device *d, + unsigned int slot, + double x, + double y, + struct axis_replacement *axes); void litest_touch_down(struct litest_device *d, unsigned int slot, double x, double y); +void litest_touch_down_extended(struct litest_device *d, + unsigned int slot, + double x, + double y, + struct axis_replacement *axes); void litest_touch_move_to(struct litest_device *d, unsigned int slot, double x_from, double y_from, -- 2.1.4 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel