diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2022-02-02 13:56:15 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2022-02-04 12:44:09 +1000 |
commit | 591d4633dc99a2ba3dd906b570fd98e95482d8de (patch) | |
tree | f0f410e160b5ded05e2826434cad507ff3c37279 | |
parent | ff94040208c9da3411753e1ffe554e6c80b87dd7 (diff) | |
download | xf86-input-wacom-591d4633dc99a2ba3dd906b570fd98e95482d8de.tar.gz |
test: add a test for the convertAxes helper
See #222
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | src/x11/xf86Wacom.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/x11/xf86Wacom.c b/src/x11/xf86Wacom.c index 6bbdf12..c4ea043 100644 --- a/src/x11/xf86Wacom.c +++ b/src/x11/xf86Wacom.c @@ -991,4 +991,88 @@ _X_EXPORT XF86ModuleData wacomModuleData = }; +#ifdef ENABLE_TESTS +#include "wacom-test-suite.h" + +TEST_CASE(test_convert_axes) +{ + WacomAxisData axes = {0}; + int first, num; + int valuators[7]; + +#define reset(v) \ + for (size_t _i = 0; _i < ARRAY_SIZE(v); _i++) \ + v[_i] = 0xab; + + reset(valuators); + + convertAxes(&axes, &first, &num, valuators); + assert(first == 0); + assert(num == 0); + for (size_t i = 0; i< ARRAY_SIZE(valuators); i++) + assert(valuators[i] == 0xab); + + reset(valuators); + memset(&axes, 0, sizeof(axes)); + + /* Check conversion for single value with first_valuator != 0 */ + wcmAxisSet(&axes, WACOM_AXIS_PRESSURE, 1); /* pos 2 */ + convertAxes(&axes, &first, &num, valuators); + assert(first == 2); + assert(num == 1); + assert(valuators[0] == 1); + assert(valuators[1] == 0xab); + assert(valuators[2] == 0xab); + assert(valuators[3] == 0xab); + assert(valuators[4] == 0xab); + assert(valuators[5] == 0xab); + assert(valuators[6] == 0xab); + + reset(valuators); + memset(&axes, 0, sizeof(axes)); + + /* Check conversion for gaps with first_valuator != 0 */ + wcmAxisSet(&axes, WACOM_AXIS_PRESSURE, 1); /* pos 2 */ + wcmAxisSet(&axes, WACOM_AXIS_WHEEL, 2); /* pos 5 */ + + convertAxes(&axes, &first, &num, valuators); + assert(first == 2); + assert(num == 4); + assert(valuators[0] == 1); + assert(valuators[1] == 0); + assert(valuators[2] == 0); + assert(valuators[3] == 2); + assert(valuators[4] == 0xab); + assert(valuators[5] == 0xab); + assert(valuators[6] == 0xab); + + reset(valuators); + memset(&axes, 0, sizeof(axes)); + + /* Check conversion for valuators with duplicate uses. Note that this + * test is implementation-dependent: the loop in convertAxes decides + */ + wcmAxisSet(&axes, WACOM_AXIS_PRESSURE, 1); /* pos 2 */ + wcmAxisSet(&axes, WACOM_AXIS_STRIP_X, 20); /* pos 3 */ + wcmAxisSet(&axes, WACOM_AXIS_STRIP_Y, 21); /* pos 4 */ + wcmAxisSet(&axes, WACOM_AXIS_TILT_X, 10); /* also pos 3 */ + wcmAxisSet(&axes, WACOM_AXIS_TILT_Y, 11); /* also pos 4 */ + wcmAxisSet(&axes, WACOM_AXIS_RING, 3); /* pos 5 */ + wcmAxisSet(&axes, WACOM_AXIS_WHEEL, 2); /* also pos 5 */ + + convertAxes(&axes, &first, &num, valuators); + assert(first == 2); + assert(num == 4); + assert(valuators[0] == 1); + assert(valuators[1] == 10); + assert(valuators[2] == 11); + assert(valuators[3] == 2); + assert(valuators[4] == 0xab); + assert(valuators[5] == 0xab); + assert(valuators[6] == 0xab); + +} + +#endif + /* vim: set noexpandtab tabstop=8 shiftwidth=8: */ |