test: add tests for the eis region getters

This commit is contained in:
Peter Hutterer 2023-06-06 14:02:19 +10:00
parent f0894aac67
commit 987997dc2c
3 changed files with 148 additions and 0 deletions

View file

@ -98,3 +98,48 @@ ei_region_convert_point(struct ei_region *r, double *x, double *y)
return false;
}
#ifdef _enable_tests_
#include "util-munit.h"
MUNIT_TEST(test_region_setters)
{
struct ei_region r = {0};
ei_region_set_size(&r, 1, 2);
ei_region_set_offset(&r, 3, 4);
ei_region_set_physical_scale(&r, 5.6);
munit_assert_int(ei_region_get_width(&r), ==, 1);
munit_assert_int(ei_region_get_height(&r), ==, 2);
munit_assert_int(ei_region_get_x(&r), ==, 3);
munit_assert_int(ei_region_get_y(&r), ==, 4);
munit_assert_double(ei_region_get_physical_scale(&r), ==, 5.6);
return MUNIT_OK;
}
MUNIT_TEST(test_region_contains)
{
struct ei_region r = {0};
ei_region_set_size(&r, 100, 200);
ei_region_set_offset(&r, 300, 400);
munit_assert_true(ei_region_contains(&r, 300, 400));
munit_assert_true(ei_region_contains(&r, 399.9, 599.9));
munit_assert_false(ei_region_contains(&r, 299.9, 400));
munit_assert_false(ei_region_contains(&r, 300, 399.9));
munit_assert_false(ei_region_contains(&r, 400.1, 400));
munit_assert_false(ei_region_contains(&r, 400, 399.9));
munit_assert_false(ei_region_contains(&r, 299.9, 599.9));
munit_assert_false(ei_region_contains(&r, 300, 600.1));
munit_assert_false(ei_region_contains(&r, 400, 599.9));
munit_assert_false(ei_region_contains(&r, 399, 600));
return MUNIT_OK;
}
#endif

View file

@ -138,3 +138,48 @@ eis_region_contains(struct eis_region *r, double x, double y)
return (x >= r->x && x < r->x + r->width &&
y >= r->y && y < r->y + r->height);
}
#ifdef _enable_tests_
#include "util-munit.h"
MUNIT_TEST(test_region_setters)
{
struct eis_region r = {0};
eis_region_set_size(&r, 1, 2);
eis_region_set_offset(&r, 3, 4);
eis_region_set_physical_scale(&r, 5.6);
munit_assert_int(eis_region_get_width(&r), ==, 1);
munit_assert_int(eis_region_get_height(&r), ==, 2);
munit_assert_int(eis_region_get_x(&r), ==, 3);
munit_assert_int(eis_region_get_y(&r), ==, 4);
munit_assert_double(eis_region_get_physical_scale(&r), ==, 5.6);
return MUNIT_OK;
}
MUNIT_TEST(test_region_contains)
{
struct eis_region r = {0};
eis_region_set_size(&r, 100, 200);
eis_region_set_offset(&r, 300, 400);
munit_assert_true(eis_region_contains(&r, 300, 400));
munit_assert_true(eis_region_contains(&r, 399.9, 599.9));
munit_assert_false(eis_region_contains(&r, 299.9, 400));
munit_assert_false(eis_region_contains(&r, 300, 399.9));
munit_assert_false(eis_region_contains(&r, 400.1, 400));
munit_assert_false(eis_region_contains(&r, 400, 399.9));
munit_assert_false(eis_region_contains(&r, 299.9, 599.9));
munit_assert_false(eis_region_contains(&r, 300, 600.1));
munit_assert_false(eis_region_contains(&r, 400, 599.9));
munit_assert_false(eis_region_contains(&r, 399, 600));
return MUNIT_OK;
}
#endif

View file

@ -287,3 +287,61 @@ MUNIT_TEST(eistest_device_ignore_paused_device)
return MUNIT_OK;
}
MUNIT_TEST(eistest_regions)
{
_unref_(peck) *peck = peck_new();
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_ACCEPT_CLIENT);
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_DEFAULT_SEAT);
peck_enable_eis_behavior(peck, PECK_EIS_BEHAVIOR_HANDLE_BIND_SEAT);
peck_dispatch_until_stable(peck);
with_server(peck) {
struct eis_seat *seat = peck_eis_get_default_seat(peck);
_unref_(eis_device) *ptr = eis_seat_new_device(seat);
eis_device_configure_capability(ptr, EIS_DEVICE_CAP_POINTER_ABSOLUTE);
eis_device_configure_capability(ptr, EIS_DEVICE_CAP_BUTTON);
eis_device_configure_capability(ptr, EIS_DEVICE_CAP_SCROLL);
eis_device_configure_name(ptr, "region device");
_unref_(eis_region) *region = eis_device_new_region(ptr);
eis_region_set_size(region, 100, 200);
eis_region_set_offset(region, 300, 400);
eis_region_set_physical_scale(region, 5.6);
eis_region_add(region);
eis_device_add(ptr);
eis_device_resume(ptr);
}
peck_dispatch_until_stable(peck);
with_client(peck) {
_unref_(ei_event) *added =
peck_ei_next_event(ei, EI_EVENT_DEVICE_ADDED);
_unref_(ei_event) *resumed =
peck_ei_next_event(ei, EI_EVENT_DEVICE_RESUMED);
struct ei_device *device = ei_event_get_device(resumed);
ei_device_start_emulating(device, 1);
}
peck_dispatch_until_stable(peck);
with_server(peck) {
_unref_(eis_event) *start =
peck_eis_next_event(eis, EIS_EVENT_DEVICE_START_EMULATING);
struct eis_device *device = eis_event_get_device(start);
struct eis_region *r = eis_device_get_region(device, 0);
munit_assert_int(eis_region_get_width(r), ==, 100);
munit_assert_int(eis_region_get_height(r), ==, 200);
munit_assert_int(eis_region_get_x(r), ==, 300);
munit_assert_int(eis_region_get_y(r), ==, 400);
munit_assert_double(eis_region_get_physical_scale(r), ==, 5.6);
r = eis_device_get_region(device, 1);
munit_assert_null(r);
}
return MUNIT_OK;
}