summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2013-01-11 11:47:34 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2013-02-25 08:35:24 +1000
commit879f0195c6174bbf9b9b621dd876c36237209cab (patch)
tree4544d373dfbc87db9dfa936c79335261a39aa0b7 /test
parent676b62af8cc28755e4b17b5b0d2d78f0704ebcfd (diff)
device: add HasEvent() and GetAbsData()
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'test')
-rw-r--r--test/SynPS2-Synaptics-TouchPad.desc33
-rw-r--r--test/device-test.cpp167
2 files changed, 200 insertions, 0 deletions
diff --git a/test/SynPS2-Synaptics-TouchPad.desc b/test/SynPS2-Synaptics-TouchPad.desc
new file mode 100644
index 0000000..3f4982b
--- /dev/null
+++ b/test/SynPS2-Synaptics-TouchPad.desc
@@ -0,0 +1,33 @@
+N: SynPS/2 Synaptics TouchPad
+I: 0011 0002 0007 01b1
+P: 05 00 00 00 00 00 00 00
+B: 00 0b 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 01 00 00 00 00 00
+B: 01 20 e5 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 01 00 00 00 00 00 00 00 00
+B: 02 00 00 00 00 00 00 00 00
+B: 03 03 00 00 11 00 80 60 06
+B: 04 00 00 00 00 00 00 00 00
+B: 05 00 00 00 00 00 00 00 00
+B: 11 00 00 00 00 00 00 00 00
+B: 12 00 00 00 00 00 00 00 00
+B: 15 00 00 00 00 00 00 00 00
+B: 15 00 00 00 00 00 00 00 00
+A: 00 1472 5472 8 0
+A: 01 1408 4448 8 0
+A: 18 0 255 0 0
+A: 1c 0 15 0 0
+A: 2f 0 1 0 0
+A: 35 1472 5472 8 0
+A: 36 1408 4448 8 0
+A: 39 0 65535 0 0
+A: 3a 0 255 0 0
diff --git a/test/device-test.cpp b/test/device-test.cpp
index 47ddb26..b7b411b 100644
--- a/test/device-test.cpp
+++ b/test/device-test.cpp
@@ -2,6 +2,9 @@
#include <xorg/gtest/xorg-gtest.h>
#ifdef HAVE_EVEMU
+#ifndef BTN_TOOL_QUINTTAP
+#define BTN_TOOL_QUINTTAP 0x148
+#endif
using namespace xorg::testing;
@@ -24,6 +27,170 @@ TEST(Device, InotifyWait)
ASSERT_FALSE(d.GetDeviceNode().empty());
}
+TEST(Device, HasEvent)
+{
+ XORG_TESTCASE("HasEvent must return the right bits.\n");
+
+ xorg::testing::evemu::Device d(TEST_ROOT_DIR "PIXART-USB-OPTICAL-MOUSE.desc");
+
+ for (int i = ABS_X; i < ABS_MAX; i++)
+ ASSERT_FALSE(d.HasEvent(EV_ABS, i)) << "Axis code " << i;
+
+ for (int i = REL_X; i < REL_MAX; i++) {
+ if (i == REL_X || i == REL_Y || i == REL_WHEEL)
+ ASSERT_TRUE(d.HasEvent(EV_REL, i)) << "Axis code " << i;
+ else
+ ASSERT_FALSE(d.HasEvent(EV_REL, i)) << "Axis code " << i;
+ }
+
+ for (int i = BTN_LEFT; i < KEY_MAX; i++) {
+ if (i == BTN_LEFT || i == BTN_RIGHT || i == BTN_MIDDLE)
+ ASSERT_TRUE(d.HasEvent(EV_KEY, i)) << "Axis code " << i;
+ else
+ ASSERT_FALSE(d.HasEvent(EV_KEY, i)) << "Axis code " << i;
+ }
+
+ xorg::testing::evemu::Device d2(TEST_ROOT_DIR "SynPS2-Synaptics-TouchPad.desc");
+
+ for (int i = REL_X; i < REL_MAX; i++)
+ ASSERT_FALSE(d2.HasEvent(EV_REL, i)) << "Axis code " << i;
+
+ for (int i = ABS_X; i < ABS_MAX; i++) {
+ switch (i) {
+ case ABS_X:
+ case ABS_Y:
+ case ABS_PRESSURE:
+ case ABS_TOOL_WIDTH:
+ case ABS_MT_SLOT:
+ case ABS_MT_POSITION_X:
+ case ABS_MT_POSITION_Y:
+ case ABS_MT_TRACKING_ID:
+ case ABS_MT_PRESSURE:
+ ASSERT_TRUE(d2.HasEvent(EV_ABS, i)) << "Axis code " << i;
+ break;
+ default:
+ ASSERT_FALSE(d2.HasEvent(EV_REL, i)) << "Axis code " << i;
+ break;
+
+ }
+ }
+
+ for (int i = BTN_LEFT; i < KEY_MAX; i++) {
+ switch (i) {
+ case BTN_LEFT:
+ case BTN_TOOL_FINGER:
+ case BTN_TOOL_QUINTTAP:
+ case BTN_TOUCH:
+ case BTN_TOOL_DOUBLETAP:
+ case BTN_TOOL_TRIPLETAP:
+ case BTN_TOOL_QUADTAP:
+ ASSERT_TRUE(d2.HasEvent(EV_KEY, i)) << "Axis code " << i;
+ break;
+ default:
+ ASSERT_FALSE(d2.HasEvent(EV_KEY, i)) << "Axis code " << i;
+ }
+ }
+
+}
+
+TEST(Device, AbsAxisData) {
+ XORG_TESTCASE("GetAbsData must return the right values.\n");
+
+ xorg::testing::evemu::Device d(TEST_ROOT_DIR "SynPS2-Synaptics-TouchPad.desc");
+
+ const int DEFAULT = -3;
+
+ for (int i = ABS_X; i < ABS_MAX; i++) {
+ int min = 0, max = 0, fuzz = 0, flat = 0, resolution = 0;
+ bool axis_exists = 1;
+
+ switch (i) {
+ case ABS_X:
+ case ABS_MT_POSITION_X:
+ min = 1472;
+ max = 5472;
+ fuzz = 8;
+ break;
+ case ABS_Y:
+ case ABS_MT_POSITION_Y:
+ min = 1408;
+ max = 4448;
+ fuzz = 8;
+ break;
+ case ABS_PRESSURE:
+ min = 0;
+ max = 255;
+ break;
+ case ABS_TOOL_WIDTH:
+ min = 0;
+ max = 15;
+ break;
+ case ABS_MT_SLOT:
+ min = 0;
+ max = 1;
+ break;
+ case ABS_MT_TRACKING_ID:
+ min = 0;
+ max = 65535;
+ break;
+ case ABS_MT_PRESSURE:
+ min = 0;
+ max = 255;
+ break;
+ default:
+ axis_exists = false;
+ break;
+ }
+
+ if (axis_exists) {
+ int min_ret = min;
+ int max_ret = max;
+ int fuzz_ret = fuzz;
+ int flat_ret = flat;
+ int res_ret = resolution;
+
+ ASSERT_TRUE(d.GetAbsData(i, &min_ret, &max_ret)) << "Axis code " << i;
+ ASSERT_EQ(min, min_ret);
+ ASSERT_EQ(max, max_ret);
+
+ ASSERT_TRUE(d.GetAbsData(i, &min_ret, &max_ret, &fuzz)) << "Axis code " << i;
+ ASSERT_EQ(min, min_ret);
+ ASSERT_EQ(max, max_ret);
+ ASSERT_EQ(fuzz, fuzz_ret);
+
+ ASSERT_TRUE(d.GetAbsData(i, &min_ret, &max_ret, &fuzz, &flat)) << "Axis code " << i;
+ ASSERT_EQ(min, min_ret);
+ ASSERT_EQ(max, max_ret);
+ ASSERT_EQ(fuzz, fuzz_ret);
+ ASSERT_EQ(flat, flat_ret);
+
+ ASSERT_TRUE(d.GetAbsData(i, &min_ret, &max_ret, &fuzz, &flat, &res_ret)) << "Axis code " << i;
+ ASSERT_EQ(min, min_ret);
+ ASSERT_EQ(max, max_ret);
+ ASSERT_EQ(fuzz, fuzz_ret);
+ ASSERT_EQ(flat, flat_ret);
+ ASSERT_EQ(res_ret, resolution);
+ } else {
+ min = DEFAULT;
+ max = DEFAULT;
+ fuzz = DEFAULT;
+ flat = DEFAULT;
+ resolution = DEFAULT;
+
+ ASSERT_FALSE(d.GetAbsData(i, &min, &max)) << "Axis code " << i;
+
+ /* make sure we didn't overwrite the values */
+ ASSERT_EQ(min, DEFAULT);
+ ASSERT_EQ(max, DEFAULT);
+ ASSERT_EQ(fuzz, DEFAULT);
+ ASSERT_EQ(flat, DEFAULT);
+ ASSERT_EQ(resolution, DEFAULT);
+ }
+
+ }
+}
+
+
#endif
int main(int argc, char *argv[]) {