#include "test.h" void wayland_press_release_state(struct ct *t) { Wlstate s; wlstateinit(&s); CT_CHECK(t, wlstatepress(&s, 30, 1, 0, 0)); CT_CHECK(t, !wlstaterelease(&s, 30)); CT_CHECK(t, wlstaterelease(&s, 30)); CT_CHECK(t, wlstatepress(&s, 31, 0, 0, 0)); CT_CHECK(t, wlstaterelease(&s, 31)); CT_CHECK(t, !wlstatepress(&s, Wlkeymax, 1, 0, 0)); CT_CHECK(t, wlstaterelease(&s, Wlkeymax)); } void wayland_repeat_state(struct ct *t) { Wlstate s; u32int key; wlstateinit(&s); wlstaterepeatinfo(&s, 25, 400); CT_CHECK(t, wlstatepress(&s, 14, 1, 1, 100)); CT_EQ_INT(t, 400, wlstatetimeout(&s, 100)); CT_CHECK(t, !wlstaterepeat(&s, 499, &key)); CT_CHECK(t, wlstaterepeat(&s, 500, &key)); CT_EQ_UINT(t, 14, key); CT_EQ_INT(t, 40, wlstatetimeout(&s, 500)); CT_CHECK(t, !wlstaterelease(&s, 14)); CT_EQ_INT(t, -1, wlstatetimeout(&s, 500)); CT_CHECK(t, wlstatepress(&s, 15, 1, 0, 600)); CT_EQ_INT(t, -1, wlstatetimeout(&s, 600)); CT_CHECK(t, !wlstaterelease(&s, 15)); CT_CHECK(t, wlstatepress(&s, 16, 0, 1, 600)); CT_EQ_INT(t, -1, wlstatetimeout(&s, 600)); CT_CHECK(t, wlstaterelease(&s, 16)); } void wayland_repeat_cancellation(struct ct *t) { Wlstate s; wlstateinit(&s); wlstaterepeatinfo(&s, 20, 300); CT_CHECK(t, wlstatepress(&s, 20, 1, 1, 0)); CT_CHECK(t, wlstatepress(&s, 19, 0, 0, 10)); CT_EQ_INT(t, -1, wlstatetimeout(&s, 10)); CT_CHECK(t, !wlstaterelease(&s, 20)); CT_CHECK(t, wlstaterelease(&s, 19)); CT_CHECK(t, wlstatepress(&s, 20, 1, 1, 0)); wlstaterepeatinfo(&s, 30, 200); CT_EQ_INT(t, -1, wlstatetimeout(&s, 0)); CT_CHECK(t, !wlstaterelease(&s, 20)); CT_CHECK(t, wlstatepress(&s, 21, 1, 1, 0)); wlstatecancelrepeat(&s); CT_EQ_INT(t, -1, wlstatetimeout(&s, 0)); CT_CHECK(t, !wlstaterelease(&s, 21)); CT_CHECK(t, wlstatepress(&s, 22, 1, 1, 0)); wlstateclear(&s); CT_CHECK(t, wlstaterelease(&s, 22)); }