mirror of
https://gitlab.freedesktop.org/libinput/libei.git
synced 2026-05-05 17:08:02 +02:00
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:
parent
379f47b06b
commit
c9b374c383
1 changed files with 73 additions and 138 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue