tested the Mapping object

xkb
sezanzeb 4 years ago committed by sezanzeb
parent 2b1a0de45f
commit 1dd995e101

@ -91,10 +91,11 @@ class Mapping:
Parameters
----------
previous_keycode : int or None
If None, will not remove any previous mapping.
new_keycode : int
character : string
"""
if new_keycode and character and new_keycode != previous_keycode:
if new_keycode and character:
self._mapping[new_keycode] = character
if new_keycode != previous_keycode:
# clear previous mapping of that code, because the line
@ -113,21 +114,6 @@ class Mapping:
if self._mapping.get(keycode) is not None:
del self._mapping[keycode]
def add(self, keycode, character):
"""Add a mapping for a hardware key to a character.
Parameters
----------
keycode : int
character : string
"""
if self._mapping.get(keycode) is not None:
raise KeyError(
f'Keycode {keycode} is already mapped '
f'to {self._mapping.get(keycode)}'
)
self._mapping[keycode] = character
def get(self, keycode):
"""Read the character that is mapped to this keycode.

@ -21,10 +21,50 @@
import unittest
from keymapper.X import Mapping
class TestX(unittest.TestCase):
# TODO test the mapping object
pass
class TestMapping(unittest.TestCase):
def setUp(self):
self.mapping = Mapping()
def test_change(self):
# 1 is not assigned yet, just add it
self.mapping.change(1, 2, 'a')
self.assertIsNone(self.mapping.get(1))
self.assertEqual(self.mapping.get(2), 'a')
self.assertEqual(len(self.mapping), 1)
# change 2 to 3 and change a to b
self.mapping.change(2, 3, 'b')
self.assertIsNone(self.mapping.get(2))
self.assertEqual(self.mapping.get(3), 'b')
self.assertEqual(len(self.mapping), 1)
# add 4
self.mapping.change(None, 4, 'c')
self.assertEqual(self.mapping.get(3), 'b')
self.assertEqual(self.mapping.get(4), 'c')
self.assertEqual(len(self.mapping), 2)
# change the mapping of 4 to d
self.mapping.change(None, 4, 'd')
self.assertEqual(self.mapping.get(4), 'd')
self.assertEqual(len(self.mapping), 2)
# this also works in the same way
self.mapping.change(4, 4, 'e')
self.assertEqual(self.mapping.get(4), 'e')
self.assertEqual(len(self.mapping), 2)
def test_clear(self):
self.mapping.change(None, 10, 'NUM1')
self.mapping.change(None, 20, 'NUM2')
self.mapping.change(None, 30, 'NUM3')
self.mapping.clear(20)
self.assertEqual(self.mapping.get(10), 'NUM1')
self.assertIsNone(self.mapping.get(20))
self.assertEqual(self.mapping.get(30), 'NUM3')
if __name__ == "__main__":

Loading…
Cancel
Save