summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan McGreggor <duncan@canonical.com>2011-03-17 17:23:43 -0600
committerDuncan McGreggor <duncan@canonical.com>2011-03-17 17:23:43 -0600
commit96b1037c7600a077328215648878b813519812fa (patch)
tree8cfd4e9bdb77376a220c9c063fef97c15e20a009
parentce90c5c663a710eb1e09a8cd4843f4599ebadb42 (diff)
Updated device unit tests to test the full range of valid values.
-rw-r--r--python/evemu/const.py8
-rw-r--r--python/evemu/device.py4
-rw-r--r--python/evemu/testing/testcase.py3
-rw-r--r--python/evemu/tests/test_device.py96
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__":