diff options
author | Duncan McGreggor <duncan@canonical.com> | 2011-03-17 17:23:43 -0600 |
---|---|---|
committer | Duncan McGreggor <duncan@canonical.com> | 2011-03-17 17:23:43 -0600 |
commit | 96b1037c7600a077328215648878b813519812fa (patch) | |
tree | 8cfd4e9bdb77376a220c9c063fef97c15e20a009 | |
parent | ce90c5c663a710eb1e09a8cd4843f4599ebadb42 (diff) |
Updated device unit tests to test the full range of valid values.
-rw-r--r-- | python/evemu/const.py | 8 | ||||
-rw-r--r-- | python/evemu/device.py | 4 | ||||
-rw-r--r-- | python/evemu/testing/testcase.py | 3 | ||||
-rw-r--r-- | python/evemu/tests/test_device.py | 96 |
4 files changed, 86 insertions, 25 deletions
diff --git a/python/evemu/const.py b/python/evemu/const.py index 1fb40c6..62f76fb 100644 --- a/python/evemu/const.py +++ b/python/evemu/const.py @@ -34,7 +34,7 @@ API = [ "evemu_has_event", ] -events = { +event_types = { "EV_SYN": 0x00, "EV_KEY": 0x01, "EV_REL": 0x02, @@ -49,7 +49,7 @@ events = { "EV_FF_STATUS": 0x17, "EV_MAX": 0x1f, } -events["EV_CNT"] = events["EV_MAX"] + 1, +event_types["EV_CNT"] = event_types["EV_MAX"] + 1, event_names = { "EV_SYN": "Sync", @@ -108,7 +108,9 @@ absolute_axes = { "ABS_MT_DISTANCE": 0x3b, # Contact hover distance "ABS_MAX": 0x3f, } -absolute_axes["ABS_CNT"] = absolute_axes["ABS_MAX"] + 1, +# XXX ABS_CNT doesn't always give the same value from test data; disabling it +# for now. +#absolute_axes["ABS_CNT"] = absolute_axes["ABS_MAX"] + 1 buttons = { "BTN_MISC": 0x100, diff --git a/python/evemu/device.py b/python/evemu/device.py index 2bb854b..a0d1ac9 100644 --- a/python/evemu/device.py +++ b/python/evemu/device.py @@ -178,6 +178,7 @@ class EvEmuDevice(base.EvEmuBase): data in the device data structure. """ + # Property methods @property def version(self): return self._call( @@ -214,11 +215,12 @@ class EvEmuDevice(base.EvEmuBase): self.get_lib().evemu_get_id_version, self.get_device_pointer()) + # Getter methods def get_abs_minimum(self, event_code): return self._call( self.get_lib().evemu_get_abs_minimum, self.get_device_pointer(), - event_code) + int(event_code)) def get_abs_maximum(self, event_code): return self._call( diff --git a/python/evemu/testing/testcase.py b/python/evemu/testing/testcase.py index e3b16b3..afff94b 100644 --- a/python/evemu/testing/testcase.py +++ b/python/evemu/testing/testcase.py @@ -49,9 +49,6 @@ class BaseTestCase(unittest.TestCase): else: library = const.LOCAL_LIB self.library = library - #timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") - #self.device_name = "evm tst dvc: %s" % timestamp - #self.device_name = "evemu-%d:%s" % (os.getpid(), self._testMethodName) basedir = util.get_top_directory() self.data_dir = os.path.join(basedir, "..", "..", "data") self.device = None diff --git a/python/evemu/tests/test_device.py b/python/evemu/tests/test_device.py index 4e3bb57..dd3153d 100644 --- a/python/evemu/tests/test_device.py +++ b/python/evemu/tests/test_device.py @@ -1,6 +1,7 @@ import ctypes import unittest +from evemu import const from evemu import exception from evemu import util from evemu.device import EvEmuDevice @@ -89,6 +90,12 @@ class EvEmuDeviceTestCase(testcase.BaseTestCase): device_count_after = len(util.get_all_device_numbers()) self.assertEqual(device_count_before + 1, device_count_after) + +class EvEmuDevicePropertyTestCase(testcase.BaseTestCase): + + def get_ev_abs_codes(self): + return const.absolute_axes.values() + def test_version(self): self.create_testing_device() self.assertEqual(self.device.version, 0) @@ -113,41 +120,94 @@ class EvEmuDeviceTestCase(testcase.BaseTestCase): self.create_testing_device() self.assertEqual(self.device.id_version, 272) + +class EvEmuDeviceGetterTestCase(testcase.BaseTestCase): + def test_get_abs_minimum(self): self.create_testing_device() - for event_code in xrange(10): - self.assertEqual(self.device.get_abs_minimum(event_code), 0) + expected = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ] + results = [self.device.get_abs_minimum(x) + for x in const.absolute_axes.values()] + self.assertEqual(results, expected) def test_get_abs_maximum(self): self.create_testing_device() - event_code = 0 - self.assertEqual(self.device.get_abs_maximum(event_code), 9600) + expected = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9600, 7200, 0, 0, 0, 0, + 7200, 1, 7200, 0, 9600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9600, + 0, 0, + ] + # Skipping the entry for ABS_CNT; some times it's 0, sometimes a very + # large negative number. + results = [self.device.get_abs_maximum(x) + for x in const.absolute_axes.values()] + self.assertEqual(results[:-1], expected[:-1]) def test_get_abs_fuzz(self): self.create_testing_device() - event_code = 0 - self.assertEqual(self.device.get_abs_fuzz(event_code), 75) + expected = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 78, 0, 0, 0, 0, 150, + 0, 78, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, + ] + results = [self.device.get_abs_fuzz(x) + for x in const.absolute_axes.values()] + self.assertEqual(results, expected) def test_get_abs_flat(self): self.create_testing_device() - event_code = 0 - self.assertEqual(self.device.get_abs_flat(event_code), 0) + expected = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ] + results = [self.device.get_abs_flat(x) + for x in const.absolute_axes.values()] + self.assertEqual(results, expected) def test_get_abs_resolution(self): self.create_testing_device() - event_code = 0 - self.assertEqual(self.device.get_abs_resolution(event_code), 0) + expected = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ] + results = [self.device.get_abs_resolution(x) + for x in const.absolute_axes.values()] + self.assertEqual(results, expected) def test_has_prop(self): self.create_testing_device() - event_code = 0 - self.assertEqual(self.device.has_prop(event_code), 0) - - def test_has_event(self): - self.create_testing_device() - event_type = 0 - event_code = 0 - self.assertEqual(self.device.has_event(event_type, event_code), 1) + expected = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ] + results = [self.device.has_prop(x) + for x in const.absolute_axes.values()] + self.assertEqual(results, expected) + + def test_has_event_ev_abs(self): + self.create_testing_device() + expected = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, + ] + results = [self.device.has_event(const.event_types["EV_ABS"], x) + for x in const.absolute_axes.values()] + self.assertEqual(results, expected) + + def test_has_event_ev_key(self): + self.create_testing_device() + expected = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ] + results = [self.device.has_event(const.event_types["EV_KEY"], x) + for x in const.buttons.values()] + self.assertEqual(results, expected) if __name__ == "__main__": |