diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2014-08-12 11:34:38 +1000 |
---|---|---|
committer | Benjamin Tissoires <benjamin.tissoires@gmail.com> | 2014-08-12 13:53:45 -0400 |
commit | 09b01fc6a6e2f57738d153545a63894ae005e555 (patch) | |
tree | a46f8888af43b8a6bea298d7fa439d2c0ac4f468 /python | |
parent | 36a1001636d18f4653813cf46baaa312db8512e9 (diff) |
python: be forgiving about invalid event types/codes in the public API
Return None if not found instead of throwing a KeyError which reveals too much
of the internal implementation anyway.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Diffstat (limited to 'python')
-rw-r--r-- | python/evemu/__init__.py | 14 | ||||
-rw-r--r-- | python/evemu/tests/test_device.py | 21 |
2 files changed, 32 insertions, 3 deletions
diff --git a/python/evemu/__init__.py b/python/evemu/__init__.py index a4f75ce..096182d 100644 --- a/python/evemu/__init__.py +++ b/python/evemu/__init__.py @@ -34,22 +34,30 @@ __all__ = ["Device"] def event_get_value(event_type, event_code = None): """ Return the integer-value for the given event type and/or code string - e.g. "EV_ABS" returns 0x03, ("EV_ABS", "ABS_Y") returns 0x01 + e.g. "EV_ABS" returns 0x03, ("EV_ABS", "ABS_Y") returns 0x01. + Unknown event types or type/code combinations return None. If an event code is passed, the event type may be given as integer or string. """ - return evemu.event_names._event_get_value(event_type, event_code) + try: + return evemu.event_names._event_get_value(event_type, event_code) + except KeyError: + return None def event_get_name(event_type, event_code = None): """ Return the string-value for the given event type and/or code value e.g. 0x03 returns "EV_ABS", ("EV_ABS", 0x01) returns "ABS_Y" + Unknown event types or type/code combinations return None. If an event code is passed, the event type may be given as integer or string. """ - return evemu.event_names._event_get_name(event_type, event_code) + try: + return evemu.event_names._event_get_name(event_type, event_code) + except KeyError: + return None class InputEvent(object): __slots__ = 'sec', 'usec', 'type', 'code', 'value' diff --git a/python/evemu/tests/test_device.py b/python/evemu/tests/test_device.py index 4c555a4..3e3ede0 100644 --- a/python/evemu/tests/test_device.py +++ b/python/evemu/tests/test_device.py @@ -263,5 +263,26 @@ class DevicePropertiesTestCase(evemu.testing.testcase.BaseTestCase): self.assertEqual(results, self.get_expected_keybits()) + def test_event_names(self): + self.assertEqual(evemu.event_get_value("EV_SYN"), 0x00) + self.assertEqual(evemu.event_get_value("EV_KEY"), 0x01) + self.assertEqual(evemu.event_get_value("EV_ABS"), 0x03) + self.assertEqual(evemu.event_get_value("EV_FOO"), None) + + self.assertEqual(evemu.event_get_value("EV_SYN", "SYN_REPORT"), 0x00) + self.assertEqual(evemu.event_get_value("EV_KEY", "KEY_Z"), 44) + self.assertEqual(evemu.event_get_value("EV_ABS", "ABS_X"), 0x00) + self.assertEqual(evemu.event_get_value("EV_ABS", "ABS_FOO"), None) + + self.assertEqual(evemu.event_get_name(0x00), "EV_SYN") + self.assertEqual(evemu.event_get_name(0x01), "EV_KEY") + self.assertEqual(evemu.event_get_name(0x03), "EV_ABS") + self.assertEqual(evemu.event_get_name(0xFFFF), None) + + self.assertEqual(evemu.event_get_name("EV_SYN", 0x00), "SYN_REPORT") + self.assertEqual(evemu.event_get_name("EV_REL", 0x01), "REL_Y") + self.assertEqual(evemu.event_get_name("EV_ABS", 0x00), "ABS_X") + self.assertEqual(evemu.event_get_name("EV_ABS", 0xFFFF), None) + if __name__ == "__main__": unittest.main() |