diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2013-02-14 09:11:59 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2013-02-14 09:11:59 +1000 |
commit | f356d316ec2c7a849f9dc631a6ac26f50813e974 (patch) | |
tree | 15d184d4e55f8909de9967ceaa6a69ca79adccca | |
parent | 0036a635b346949850300e34f583af84db5f100c (diff) |
Move touch test over to grabs
-rw-r--r-- | tests/server/grab.cpp | 49 | ||||
-rw-r--r-- | tests/server/touch.cpp | 107 |
2 files changed, 49 insertions, 107 deletions
diff --git a/tests/server/grab.cpp b/tests/server/grab.cpp index c2adb28..ad1dc47 100644 --- a/tests/server/grab.cpp +++ b/tests/server/grab.cpp @@ -485,6 +485,55 @@ class TouchGrabTestMultipleModes : public TouchGrabTest, { }; +TEST_P(TouchGrabTestMultipleModes, SingleTouchGrabListenerAcceptRejectBeforeTouchEnd) +{ + int mode = GetParam(); + std::string strmode = (mode == XIAcceptTouch) ? "XIAcceptTouch" : "XIRejectTouch"; + + XORG_TESTCASE("Register for a touch grab.\n" + "Begin touch\n" + "Verify begin event is received.\n" + "Call XIAllowTouchEvents(i" + strmode + ")\n" + "End touch\n" + "Verify end event is received at the right time.\n"); + + ::Display *dpy = Display(); + Window root = DefaultRootWindow(dpy); + + XIEventMask mask; + mask.deviceid = VIRTUAL_CORE_POINTER_ID; + mask.mask_len = XIMaskLen(XI_TouchEnd); + mask.mask = new unsigned char[mask.mask_len](); + XISetMask(mask.mask, XI_TouchBegin); + XISetMask(mask.mask, XI_TouchUpdate); + XISetMask(mask.mask, XI_TouchEnd); + + XIGrabModifiers mods = {}; + mods.modifiers = XIAnyModifier; + ASSERT_EQ(Success, XIGrabTouchBegin(dpy, VIRTUAL_CORE_POINTER_ID, + root, False, &mask, 1, &mods)); + delete[] mask.mask; + + dev->Play(RECORDINGS_DIR "tablets/N-Trig-MultiTouch.touch_1_begin.events"); + + ASSERT_EVENT(XIDeviceEvent, tbegin, dpy, GenericEvent, xi2_opcode, XI_TouchBegin); + XIAllowTouchEvents(dpy, tbegin->deviceid, tbegin->detail, root, mode); + + if (mode == XIAcceptTouch) + ASSERT_TRUE(NoEventPending(dpy)); + else { + ASSERT_EVENT(XIDeviceEvent, tend, dpy, GenericEvent, xi2_opcode, XI_TouchEnd); + } + + dev->Play(RECORDINGS_DIR "tablets/N-Trig-MultiTouch.touch_1_end.events"); + + if (mode == XIAcceptTouch) { + ASSERT_EVENT(XIDeviceEvent, tend, dpy, GenericEvent, xi2_opcode, XI_TouchEnd); + } + + ASSERT_TRUE(NoEventPending(dpy)); +} + TEST_P(TouchGrabTestMultipleModes, ActiveAndPassiveGrab) { int mode = GetParam(); diff --git a/tests/server/touch.cpp b/tests/server/touch.cpp index a2e386f..91b93f5 100644 --- a/tests/server/touch.cpp +++ b/tests/server/touch.cpp @@ -114,113 +114,6 @@ TEST_F(TouchTest, TouchEventFlags) ASSERT_EQ(0, tend->flags & ~XITouchEmulatingPointer); } -TEST_F(TouchTest, SingleGrabListenerAcceptAfterTouchEnd) -{ - XORG_TESTCASE("Register for a touch grab.\n" - "Begin/end touch\n" - "Verify both events are received.\n" - "Call XIAllowTouchEvents\n" - "Verify no more events waiting.\n"); - - ::Display *dpy = Display(); - Window root = DefaultRootWindow(dpy); - - XIEventMask mask; - mask.deviceid = VIRTUAL_CORE_POINTER_ID; - mask.mask_len = XIMaskLen(XI_TouchEnd); - mask.mask = new unsigned char[mask.mask_len](); - XISetMask(mask.mask, XI_TouchBegin); - XISetMask(mask.mask, XI_TouchUpdate); - XISetMask(mask.mask, XI_TouchEnd); - - XIGrabModifiers mods = {}; - mods.modifiers = XIAnyModifier; - ASSERT_EQ(Success, XIGrabTouchBegin(dpy, VIRTUAL_CORE_POINTER_ID, - root, False, &mask, 1, &mods)); - delete[] mask.mask; - - TouchBegin(100, 100); - TouchEnd(); - - ASSERT_EVENT(XIDeviceEvent, tbegin, dpy, GenericEvent, xi2_opcode, XI_TouchBegin); - ASSERT_EVENT(XIDeviceEvent, tend, dpy, GenericEvent, xi2_opcode, XI_TouchEnd); - XIAllowTouchEvents(dpy, tbegin->deviceid, tbegin->detail, root, XIAcceptTouch); - - ASSERT_TRUE(NoEventPending(dpy)); -} - -TEST_F(TouchTest, SingleGrabListenerAcceptBeforeTouchEnd) -{ - XORG_TESTCASE("Register for a touch grab.\n" - "Begin touch\n" - "Verify begin event is received.\n" - "Call XIAllowTouchEvents(Accept)\n" - "Verify end event is received.\n"); - - ::Display *dpy = Display(); - Window root = DefaultRootWindow(dpy); - - XIEventMask mask; - mask.deviceid = VIRTUAL_CORE_POINTER_ID; - mask.mask_len = XIMaskLen(XI_TouchEnd); - mask.mask = new unsigned char[mask.mask_len](); - XISetMask(mask.mask, XI_TouchBegin); - XISetMask(mask.mask, XI_TouchUpdate); - XISetMask(mask.mask, XI_TouchEnd); - - XIGrabModifiers mods = {}; - mods.modifiers = XIAnyModifier; - ASSERT_EQ(Success, XIGrabTouchBegin(dpy, VIRTUAL_CORE_POINTER_ID, - root, False, &mask, 1, &mods)); - delete[] mask.mask; - - TouchBegin(100, 100); - - ASSERT_EVENT(XIDeviceEvent, tbegin, dpy, GenericEvent, xi2_opcode, XI_TouchBegin); - XIAllowTouchEvents(dpy, tbegin->deviceid, tbegin->detail, root, XIAcceptTouch); - - TouchEnd(); - - ASSERT_EVENT(XIDeviceEvent, tend, dpy, GenericEvent, xi2_opcode, XI_TouchEnd); - ASSERT_TRUE(NoEventPending(dpy)); -} - -TEST_F(TouchTest, SingleGrabListenerRejectBeforeTouchEnd) -{ - XORG_TESTCASE("Register for a touch grab.\n" - "Begin touch\n" - "Verify begin event is received.\n" - "Call XIAllowTouchEvents(Reject)\n" - "Verify end event is received.\n"); - - ::Display *dpy = Display(); - Window root = DefaultRootWindow(dpy); - - XIEventMask mask; - mask.deviceid = VIRTUAL_CORE_POINTER_ID; - mask.mask_len = XIMaskLen(XI_TouchEnd); - mask.mask = new unsigned char[mask.mask_len](); - XISetMask(mask.mask, XI_TouchBegin); - XISetMask(mask.mask, XI_TouchUpdate); - XISetMask(mask.mask, XI_TouchEnd); - - XIGrabModifiers mods = {}; - mods.modifiers = XIAnyModifier; - ASSERT_EQ(Success, XIGrabTouchBegin(dpy, VIRTUAL_CORE_POINTER_ID, - root, False, &mask, 1, &mods)); - delete[] mask.mask; - - TouchBegin(100, 100); - - ASSERT_EVENT(XIDeviceEvent, tbegin, dpy, GenericEvent, xi2_opcode, XI_TouchBegin); - XIAllowTouchEvents(dpy, tbegin->deviceid, tbegin->detail, root, XIRejectTouch); - ASSERT_EVENT(XIDeviceEvent, tend, dpy, GenericEvent, xi2_opcode, XI_TouchEnd); - - TouchEnd(); - - ASSERT_TRUE(NoEventPending(dpy)); -} - /** * A test fixture for testing touch across XInput 2.x extension versions. * |