test: Handle 32 bit msec time overflows

The libinput_*_get_time() returns a 32 bit unsigned integer, but in the
tests we compared them to a 64 bit unsigned integer. This means that
when the 32 bit integer overflowed, we'd still compare to a
non-overflowed 64 bit integer, causing the tests to fail.

This commit fixes this by always casting the millisecond 64 bit unsigned
integer to a 32 unsigned integer, triggering the same overflow.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Jonas Ådahl 2016-04-08 15:51:26 +08:00 committed by Peter Hutterer
parent f44de7cc4f
commit 240d669bba
6 changed files with 16 additions and 6 deletions

View file

@ -1127,6 +1127,7 @@ START_TEST(gestures_time_usec)
struct libinput *li = dev->libinput;
struct libinput_event *event;
struct libinput_event_gesture *gevent;
uint64_t time_usec;
if (libevdev_get_num_slots(dev->evdev) < 3)
return;
@ -1149,8 +1150,9 @@ START_TEST(gestures_time_usec)
gevent = litest_is_gesture_event(event,
LIBINPUT_EVENT_GESTURE_SWIPE_BEGIN,
3);
time_usec = libinput_event_gesture_get_time_usec(gevent);
ck_assert_int_eq(libinput_event_gesture_get_time(gevent),
libinput_event_gesture_get_time_usec(gevent) / 1000);
(uint32_t) (time_usec / 1000));
libinput_event_destroy(event);
}
END_TEST

View file

@ -317,6 +317,7 @@ START_TEST(keyboard_time_usec)
struct libinput *li = dev->libinput;
struct libinput_event_keyboard *kev;
struct libinput_event *event;
uint64_t time_usec;
if (!libevdev_has_event_code(dev->evdev, EV_KEY, KEY_A))
return;
@ -332,8 +333,9 @@ START_TEST(keyboard_time_usec)
KEY_A,
LIBINPUT_KEY_STATE_PRESSED);
time_usec = libinput_event_keyboard_get_time_usec(kev);
ck_assert_int_eq(libinput_event_keyboard_get_time(kev),
libinput_event_keyboard_get_time_usec(kev) / 1000);
(uint32_t) (time_usec / 1000));
libinput_event_destroy(event);
litest_drain_events(dev->libinput);

View file

@ -1559,6 +1559,7 @@ START_TEST(pointer_time_usec)
struct libinput *li = dev->libinput;
struct libinput_event_pointer *ptrev;
struct libinput_event *event;
uint64_t time_usec;
litest_drain_events(dev->libinput);
@ -1571,8 +1572,9 @@ START_TEST(pointer_time_usec)
event = libinput_get_event(li);
ptrev = litest_is_motion_event(event);
time_usec = libinput_event_pointer_get_time_usec(ptrev);
ck_assert_int_eq(libinput_event_pointer_get_time(ptrev),
libinput_event_pointer_get_time_usec(ptrev) / 1000);
(uint32_t) (time_usec / 1000));
libinput_event_destroy(event);
litest_drain_events(dev->libinput);

View file

@ -2679,6 +2679,7 @@ START_TEST(tablet_time_usec)
{ ABS_PRESSURE, 0 },
{ -1, -1 }
};
uint64_t time_usec;
litest_drain_events(li);
@ -2688,8 +2689,9 @@ START_TEST(tablet_time_usec)
event = libinput_get_event(li);
tev = litest_is_tablet_event(event,
LIBINPUT_EVENT_TABLET_TOOL_PROXIMITY);
time_usec = libinput_event_tablet_tool_get_time_usec(tev);
ck_assert_int_eq(libinput_event_tablet_tool_get_time(tev),
libinput_event_tablet_tool_get_time_usec(tev) / 1000);
(uint32_t) (time_usec / 1000));
libinput_event_destroy(event);
}
END_TEST

View file

@ -658,6 +658,7 @@ START_TEST(touch_time_usec)
struct libinput *li = dev->libinput;
struct libinput_event *event;
struct libinput_event_touch *tev;
uint64_t time_usec;
litest_drain_events(dev->libinput);
@ -667,8 +668,9 @@ START_TEST(touch_time_usec)
event = libinput_get_event(li);
tev = litest_is_touch_event(event, LIBINPUT_EVENT_TOUCH_DOWN);
time_usec = libinput_event_touch_get_time_usec(tev);
ck_assert_int_eq(libinput_event_touch_get_time(tev),
libinput_event_touch_get_time_usec(tev) / 1000);
(uint32_t) (time_usec / 1000));
libinput_event_destroy(event);
}
END_TEST

View file

@ -4017,7 +4017,7 @@ START_TEST(touchpad_time_usec)
utime = libinput_event_pointer_get_time_usec(ptrev);
ck_assert_int_eq(libinput_event_pointer_get_time(ptrev),
utime / 1000);
(uint32_t) (utime / 1000));
libinput_event_destroy(event);
event = libinput_get_event(li);
}