tests: add tests for button events

Those were missing, luckily the code works
This commit is contained in:
Peter Hutterer 2023-06-07 15:10:10 +10:00
parent aa3c2eb763
commit befab06ea2

View file

@ -282,6 +282,55 @@ MUNIT_TEST(test_ei_device_add_remove)
return MUNIT_OK;
}
MUNIT_TEST(test_ei_device_button_button)
{
_unref_(peck) *peck = peck_new();
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_ACCEPT_ALL);
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_ADD_POINTER);
peck_enable_ei_behavior(peck, PECK_EI_BEHAVIOR_AUTODEVICES);
peck_dispatch_until_stable(peck);
with_client(peck) {
struct ei_device *device = peck_ei_get_default_pointer(peck);
ei_device_button_button(device, BTN_LEFT, true);
ei_device_frame(device, peck_ei_now(peck));
ei_device_button_button(device, BTN_RIGHT, true);
ei_device_frame(device, peck_ei_now(peck));
ei_device_button_button(device, BTN_RIGHT, false);
ei_device_frame(device, peck_ei_now(peck));
ei_device_button_button(device, BTN_LEFT, false);
ei_device_frame(device, peck_ei_now(peck));
}
peck_dispatch_until_stable(peck);
with_server(peck) {
_unref_(eis_event) *ld =
peck_eis_next_event(eis, EIS_EVENT_BUTTON_BUTTON);
munit_assert_int(eis_event_button_get_button(ld), ==, BTN_LEFT);
munit_assert_true(eis_event_button_get_is_press(ld));
_unref_(eis_event) *rd =
peck_eis_next_event(eis, EIS_EVENT_BUTTON_BUTTON);
munit_assert_int(eis_event_button_get_button(rd), ==, BTN_RIGHT);
munit_assert_true(eis_event_button_get_is_press(rd));
_unref_(eis_event) *ru =
peck_eis_next_event(eis, EIS_EVENT_BUTTON_BUTTON);
munit_assert_int(eis_event_button_get_button(ru), ==, BTN_RIGHT);
munit_assert_false(eis_event_button_get_is_press(ru));
_unref_(eis_event) *lu =
peck_eis_next_event(eis, EIS_EVENT_BUTTON_BUTTON);
munit_assert_int(eis_event_button_get_button(lu), ==, BTN_LEFT);
munit_assert_false(eis_event_button_get_is_press(lu));
}
return MUNIT_OK;
}
MUNIT_TEST(test_ei_device_keyboard_key)
{
_unref_(peck) *peck = peck_new();
@ -1448,6 +1497,71 @@ MUNIT_TEST(test_passive_ei_device_stop_emulating_when_removing)
return MUNIT_OK;
}
/* Same as test_ei_device_button_button() but for a passive context */
MUNIT_TEST(test_passive_ei_device_button_button)
{
_unref_(peck) *peck = peck_new_context(PECK_EI_RECEIVER);
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_ACCEPT_ALL);
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_ADD_POINTER);
peck_enable_ei_behavior(peck, PECK_EI_BEHAVIOR_AUTODEVICES);
peck_dispatch_until_stable(peck);
uint32_t sequence = 123;
with_server(peck) {
struct eis_device *device = peck_eis_get_default_pointer(peck);
eis_device_start_emulating(device, sequence);
}
peck_dispatch_until_stable(peck);
with_client(peck) {
_unref_(ei_event) *start =
peck_ei_next_event(ei, EI_EVENT_DEVICE_START_EMULATING);
munit_assert_uint(ei_event_emulating_get_sequence(start), ==, sequence);
}
with_server(peck) {
struct eis_device *device = peck_eis_get_default_pointer(peck);
eis_device_button_button(device, BTN_LEFT, true);
eis_device_frame(device, peck_eis_now(peck));
eis_device_button_button(device, BTN_RIGHT, true);
eis_device_frame(device, peck_eis_now(peck));
eis_device_button_button(device, BTN_RIGHT, false);
eis_device_frame(device, peck_eis_now(peck));
eis_device_button_button(device, BTN_LEFT, false);
eis_device_frame(device, peck_eis_now(peck));
}
peck_dispatch_until_stable(peck);
with_client(peck) {
_unref_(ei_event) *ld =
peck_ei_next_event(ei, EI_EVENT_BUTTON_BUTTON);
munit_assert_int(ei_event_button_get_button(ld), ==, BTN_LEFT);
munit_assert_true(ei_event_button_get_is_press(ld));
_unref_(ei_event) *rd =
peck_ei_next_event(ei, EI_EVENT_BUTTON_BUTTON);
munit_assert_int(ei_event_button_get_button(rd), ==, BTN_RIGHT);
munit_assert_true(ei_event_button_get_is_press(rd));
_unref_(ei_event) *ru =
peck_ei_next_event(ei, EI_EVENT_BUTTON_BUTTON);
munit_assert_int(ei_event_button_get_button(ru), ==, BTN_RIGHT);
munit_assert_false(ei_event_button_get_is_press(ru));
_unref_(ei_event) *lu =
peck_ei_next_event(ei, EI_EVENT_BUTTON_BUTTON);
munit_assert_int(ei_event_button_get_button(lu), ==, BTN_LEFT);
munit_assert_false(ei_event_button_get_is_press(lu));
}
return MUNIT_OK;
}
/* Same as test_passive_ei_device_pointer_rel() but for a passive context */
MUNIT_TEST(test_passive_ei_device_keyboard_key)
{