test: bring back the keymap tests

We can drop the test of the server overriding the client's keymap,
that's no longer a thing.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2021-08-10 17:07:43 +10:00
parent 379f47b06b
commit c9b374c383

View file

@ -664,105 +664,109 @@ MUNIT_TEST(test_ei_device_multitouch)
MUNIT_TEST(test_ei_keymap_invalid)
{
/* FIXME: needs review after the switch to server-side devices */
return MUNIT_SKIP;
#if 0
const char data[5] = {1, 2, 3, 4, 5};
_unref_(memfile) *fd = memfile_new(data, sizeof(data));
_unref_(peck) *peck = peck_new();
munit_assert_ptr_null(ei_keymap_new(EI_KEYMAP_TYPE_XKB + 1,
memfile_get_fd(fd), memfile_get_size(fd)));
munit_assert_ptr_null(ei_keymap_new(EI_KEYMAP_TYPE_XKB - 1,
memfile_get_fd(fd), memfile_get_size(fd)));
munit_assert_ptr_null(ei_keymap_new(EI_KEYMAP_TYPE_XKB,
-1, memfile_get_size(fd)));
munit_assert_ptr_null(ei_keymap_new(EI_KEYMAP_TYPE_XKB,
memfile_get_fd(fd), 0));
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_ACCEPT_ALL);
peck_dispatch_until_stable(peck);
/* Valid keymap, valgrind checks only */
_unref_(ei_keymap) *unused =
ei_keymap_new(EI_KEYMAP_TYPE_XKB, memfile_get_fd(fd), memfile_get_size(fd));
munit_assert_ptr_not_null(unused);
with_server(peck) {
struct eis_seat *seat = peck_eis_get_default_seat(peck);
_unref_(eis_device) *device = eis_device_new(seat);
const char data[5] = {1, 2, 3, 4, 5};
_unref_(memfile) *fd = memfile_new(data, sizeof(data));
munit_assert_ptr_null(eis_keymap_new(device, EIS_KEYMAP_TYPE_XKB + 1,
memfile_get_fd(fd), memfile_get_size(fd)));
munit_assert_ptr_null(eis_keymap_new(device, EIS_KEYMAP_TYPE_XKB - 1,
memfile_get_fd(fd), memfile_get_size(fd)));
munit_assert_ptr_null(eis_keymap_new(device, EIS_KEYMAP_TYPE_XKB,
-1, memfile_get_size(fd)));
munit_assert_ptr_null(eis_keymap_new(device, EIS_KEYMAP_TYPE_XKB,
memfile_get_fd(fd), 0));
/* Valid keymap, valgrind checks only */
_unref_(eis_keymap) *unused =
eis_keymap_new(device, EIS_KEYMAP_TYPE_XKB, memfile_get_fd(fd), memfile_get_size(fd));
munit_assert_ptr_not_null(unused);
}
return MUNIT_OK;
#endif
}
MUNIT_TEST(test_ei_keymap_set)
{
/* FIXME: needs review after the switch to server-side devices */
return MUNIT_SKIP;
#if 0
const char data[5] = {1, 2, 3, 4, 5};
_unref_(peck) *peck = peck_new();
_unref_(ei_device) *device = NULL;
const char data[5] = {1, 2, 3, 4, 5};
_unref_(memfile) *fd1 = memfile_new(data, sizeof(data));
_unref_(ei_keymap) *keymap = NULL;
_unref_(eis_keymap) *keymap = NULL;
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_NONE);
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_ACCEPT_CLIENT);
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_DEFAULT_SEAT);
peck_enable_ei_behavior(peck, PECK_EI_BEHAVIOR_AUTODEVICES);
peck_dispatch_until_stable(peck);
with_client(peck) {
_unref_(memfile) *fd2 = memfile_new(data, sizeof(data));
struct ei_seat *seat = peck_ei_get_default_seat(peck);
device = ei_device_new(seat);
ei_device_configure_name(device, __func__);
ei_device_configure_capability(device, EI_DEVICE_CAP_KEYBOARD);
keymap = ei_keymap_new(EI_KEYMAP_TYPE_XKB, memfile_get_fd(fd1), memfile_get_size(fd1));
ei_device_keyboard_configure_keymap(device, keymap);
munit_assert_ptr_equal(ei_device_keyboard_get_keymap(device), keymap);
/* Not possible to overwrite a keymap on a device */
_unref_(ei_keymap) *overwrite =
ei_keymap_new(EI_KEYMAP_TYPE_XKB, memfile_get_fd(fd2), memfile_get_size(fd2));
ei_device_keyboard_configure_keymap(device, overwrite);
munit_assert_ptr_equal(ei_device_keyboard_get_keymap(device), keymap);
ei_device_add(device);
/* Still impossible to overwrite after add */
_unref_(ei_keymap) *ignored =
ei_keymap_new(EI_KEYMAP_TYPE_XKB, memfile_get_fd(fd2), memfile_get_size(fd2));
ei_device_keyboard_configure_keymap(device, ignored);
munit_assert_ptr_equal(ei_device_keyboard_get_keymap(device), keymap);
}
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_HANDLE_BIND_SEAT);
peck_dispatch_until_stable(peck);
with_server(peck) {
_unref_(eis_event) *event =
peck_eis_next_event(eis, EIS_EVENT_DEVICE_ADDED);
struct eis_device *eis_device = eis_event_get_device(event);
struct eis_keymap *eis_keymap = eis_device_keyboard_get_keymap(eis_device);
struct eis_seat *seat = peck_eis_get_default_seat(peck);
_unref_(eis_device) *device = eis_device_new(seat);
eis_device_configure_name(device, __func__);
eis_device_configure_capability(device, EIS_DEVICE_CAP_KEYBOARD);
int fd = eis_keymap_get_fd(eis_keymap);
munit_assert_int(fd, !=, -1);
munit_assert_uint(eis_keymap_get_size(eis_keymap), ==, memfile_get_size(fd1));
munit_assert_uint(eis_keymap_get_type(eis_keymap), ==, EIS_KEYMAP_TYPE_XKB);
eis_device_disconnect(eis_device);
keymap = eis_keymap_new(device, EIS_KEYMAP_TYPE_XKB,
memfile_get_fd(fd1), memfile_get_size(fd1));
eis_keymap_add(keymap);
munit_assert_ptr_equal(eis_device_keyboard_get_keymap(device), keymap);
eis_device_add(device);
/* Not possible to overwrite a keymap on a device once it's set */
_unref_(memfile) *fd2 = memfile_new(data, sizeof(data));
_unref_(eis_keymap) *overwrite =
eis_keymap_new(device, EIS_KEYMAP_TYPE_XKB, memfile_get_fd(fd2), memfile_get_size(fd2));
eis_keymap_add(overwrite);
munit_assert_ptr_equal(eis_device_keyboard_get_keymap(device), keymap);
eis_device_add(device);
/* Still impossible to overwrite after add */
_unref_(eis_keymap) *ignored =
eis_keymap_new(device, EIS_KEYMAP_TYPE_XKB,
memfile_get_fd(fd2), memfile_get_size(fd2));
eis_keymap_add(ignored);
munit_assert_ptr_equal(eis_device_keyboard_get_keymap(device), keymap);
}
peck_dispatch_until_stable(peck);
with_client(peck) {
_unref_(ei_event) *event =
peck_ei_next_event(ei, EI_EVENT_DEVICE_REMOVED);
struct ei_device *d = ei_event_get_device(event);
munit_assert_ptr_equal(d, device);
peck_ei_next_event(ei, EI_EVENT_DEVICE_ADDED);
struct ei_device *ei_device = ei_event_get_device(event);
struct ei_keymap *ei_keymap = ei_device_keyboard_get_keymap(ei_device);
int fd = ei_keymap_get_fd(ei_keymap);
munit_assert_int(fd, !=, -1);
munit_assert_uint(ei_keymap_get_size(ei_keymap), ==, memfile_get_size(fd1));
munit_assert_uint(ei_keymap_get_type(ei_keymap), ==, EI_KEYMAP_TYPE_XKB);
/* FIXME: read and compare buffer */
ei_device_close(ei_device);
}
peck_dispatch_until_stable(peck);
with_server(peck) {
_unref_(eis_event) *event =
peck_eis_next_event(eis, EIS_EVENT_DEVICE_CLOSED);
struct eis_device *d = eis_event_get_device(event);
/* Rejecting a device does not unset the keymap because
* you're not supposed to do anything with the device anyway */
struct ei_keymap *km = ei_device_keyboard_get_keymap(device);
struct eis_keymap *km = eis_device_keyboard_get_keymap(d);
munit_assert_ptr_equal(keymap, km);
munit_assert_int(ei_keymap_get_source(keymap), ==, EI_KEYMAP_SOURCE_CLIENT);
}
return MUNIT_OK;
#endif
}
MUNIT_TEST(test_ei_keymap_null)
@ -817,72 +821,3 @@ MUNIT_TEST(test_ei_keymap_null)
return MUNIT_OK;
#endif
}
MUNIT_TEST(test_ei_keymap_changed)
{
/* FIXME: needs review after the switch to server-side devices */
return MUNIT_SKIP;
#if 0
const char data[5] = {1, 2, 3, 4, 5};
_unref_(peck) *peck = peck_new();
_unref_(memfile) *fd1 = memfile_new(data, sizeof(data));
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_ACCEPT_CLIENT);
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_DEFAULT_SEAT);
peck_enable_ei_behavior(peck, PECK_EI_BEHAVIOR_AUTOCONNNECT);
peck_dispatch_until_stable(peck);
with_client(peck) {
_unref_(ei_device) *device = NULL;
const char otherdata[2] = {10, 20};
_unref_(memfile) *fd2 = memfile_new(data, sizeof(otherdata));
struct ei_seat *seat = peck_ei_get_default_seat(peck);
device = ei_device_new(seat);
ei_device_configure_name(device, __func__);
ei_device_configure_capability(device, EI_DEVICE_CAP_KEYBOARD);
_unref_(ei_keymap) *keymap =
ei_keymap_new(EI_KEYMAP_TYPE_XKB, memfile_get_fd(fd2), memfile_get_size(fd2));
ei_device_keyboard_configure_keymap(device, keymap);
ei_device_add(device);
}
peck_dispatch_until_stable(peck);
/* server sets the keymap to some other fd */
with_server(peck) {
_unref_(eis_event) *event =
peck_eis_next_event(eis, EIS_EVENT_DEVICE_ADDED);
struct eis_device *device = eis_event_get_device(event);
_unref_(eis_keymap) *keymap =
eis_keymap_new(EIS_KEYMAP_TYPE_XKB, memfile_get_fd(fd1),
memfile_get_size(fd1));
eis_device_keyboard_set_keymap(device, keymap);
eis_device_allow_capability(device, EIS_DEVICE_CAP_KEYBOARD);
eis_device_connect(device);
}
peck_dispatch_until_stable(peck);
with_client(peck) {
_unref_(ei_event) *event =
peck_ei_next_event(ei, EI_EVENT_DEVICE_ADDED);
struct ei_device *device = ei_event_get_device(event);
struct ei_keymap *keymap = ei_device_keyboard_get_keymap(device);
munit_assert_ptr_not_null(keymap);
munit_assert_int(ei_keymap_get_type(keymap), ==, EI_KEYMAP_TYPE_XKB);
munit_assert_int(ei_keymap_get_source(keymap), ==, EI_KEYMAP_SOURCE_SERVER);
int km = ei_keymap_get_fd(keymap);
char buf[5];
int rc = min(xread(km, buf, sizeof(buf)), 0);
peck_errno_check(rc);
munit_assert_int(memcmp(buf, data, sizeof(buf)), ==, 0);
}
return MUNIT_OK;
#endif
}