- commit
- d68e2831a7a405309f5f419b919da1512f2dbd40
- parent
- 276688c0ce58800ed741b9c0c8bfa020295d95cf
- Author
- Tobias Bengfort <tobias.bengfort@gmx.net>
- Date
- 2014-10-11 09:24
test user input
Diffstat
| M | tests/shared.py | 11 | +++++++++-- |
| A | tests/shared_core.py | 81 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| A | tests/test_curses.py | 27 | +++++++++++++++++++++++++++ |
| A | tests/test_pygame.py | 25 | +++++++++++++++++++++++++ |
| A | tests/test_stupid.py | 21 | +++++++++++++++++++++ |
5 files changed, 163 insertions, 2 deletions
diff --git a/tests/shared.py b/tests/shared.py
@@ -1,4 +1,11 @@ -1 1 # flake8: noqa -1 2 1 3 try:2 -1 import unittest2 as unittest # flake8: noqa-1 4 import unittest2 as unittest 3 5 except ImportError:4 -1 import unittest # flake8: noqa-1 6 import unittest -1 7 -1 8 try: -1 9 from pykeyboard import PyKeyboard -1 10 except ImportError: -1 11 PyKeyboard = None
diff --git a/tests/shared_core.py b/tests/shared_core.py
@@ -0,0 +1,81 @@
-1 1 import threading
-1 2 from time import sleep
-1 3
-1 4 from shared import unittest
-1 5 from shared import PyKeyboard
-1 6
-1 7 from dirtywords.constants import KEYS
-1 8
-1 9
-1 10 class KeyboardUser(threading.Thread):
-1 11 def __init__(self, keyboard, keys=[], offset=0.05):
-1 12 super(KeyboardUser, self).__init__()
-1 13 self.k = keyboard
-1 14 self.keys = []
-1 15 self.offset = offset
-1 16
-1 17 def add_key(self, key):
-1 18 self.keys.append(key)
-1 19
-1 20 def run(self):
-1 21 for key in self.keys:
-1 22 sleep(self.offset)
-1 23 self.k.tap_key(key)
-1 24
-1 25
-1 26 @unittest.skipIf(PyKeyboard is None, 'PyUserInput not available')
-1 27 class TestCore(unittest.TestCase):
-1 28 def setUp(self):
-1 29 self.k = PyKeyboard()
-1 30 self.user = KeyboardUser(self.k)
-1 31
-1 32 def tearDown(self):
-1 33 self.user.join()
-1 34
-1 35 def test_getch_lower_ascii(self):
-1 36 self.user.add_key('a')
-1 37 self.user.add_key('b')
-1 38 self.user.add_key('1')
-1 39 self.user.start()
-1 40
-1 41 self.assertEqual(chr(self.scr.getch()), 'a')
-1 42 self.assertEqual(chr(self.scr.getch()), 'b')
-1 43 self.assertEqual(chr(self.scr.getch()), '1')
-1 44
-1 45 def test_getch_upper_ascii(self):
-1 46 self.user.add_key('A')
-1 47 self.user.start()
-1 48
-1 49 self.assertEqual(chr(self.scr.getch()), 'A')
-1 50
-1 51 def test_getch_arrow_controls(self):
-1 52 self.user.add_key(self.k.up_key)
-1 53 self.user.add_key(self.k.down_key)
-1 54 self.user.add_key(self.k.left_key)
-1 55 self.user.add_key(self.k.right_key)
-1 56 self.user.start()
-1 57
-1 58 self.assertEqual(self.scr.getch(), KEYS['Up'])
-1 59 self.assertEqual(self.scr.getch(), KEYS['Down'])
-1 60 self.assertEqual(self.scr.getch(), KEYS['Left'])
-1 61 self.assertEqual(self.scr.getch(), KEYS['Right'])
-1 62
-1 63 def test_getch_controls(self):
-1 64 self.user.add_key(self.k.backspace_key)
-1 65 self.user.add_key(self.k.return_key)
-1 66 self.user.add_key(self.k.end_key)
-1 67 self.user.add_key(self.k.home_key)
-1 68 self.user.add_key(self.k.page_up_key)
-1 69 self.user.add_key(self.k.page_down_key)
-1 70 self.user.add_key(self.k.delete_key)
-1 71 self.user.add_key(self.k.insert_key)
-1 72 self.user.start()
-1 73
-1 74 self.assertEqual(self.scr.getch(), KEYS['Backspace'])
-1 75 self.assertEqual(self.scr.getch(), KEYS['Return'])
-1 76 self.assertEqual(self.scr.getch(), KEYS['End'])
-1 77 self.assertEqual(self.scr.getch(), KEYS['Home'])
-1 78 self.assertEqual(self.scr.getch(), KEYS['PageUp'])
-1 79 self.assertEqual(self.scr.getch(), KEYS['PageDown'])
-1 80 self.assertEqual(self.scr.getch(), KEYS['Delete'])
-1 81 self.assertEqual(self.scr.getch(), KEYS['Insert'])
diff --git a/tests/test_curses.py b/tests/test_curses.py
@@ -0,0 +1,27 @@ -1 1 from shared import unittest -1 2 from shared import PyKeyboard -1 3 import shared_core -1 4 -1 5 try: -1 6 from dirtywords.curses_core import Screen -1 7 from dirtywords.curses_core import curses -1 8 except ImportError: -1 9 curses = None -1 10 -1 11 -1 12 @unittest.skipIf(curses is None, 'curses not available') -1 13 @unittest.skipIf(PyKeyboard is None, 'PyUserInput not available') -1 14 class TestCurses(shared_core.TestCore): -1 15 def setUp(self): -1 16 super(TestCurses, self).setUp() -1 17 self.scr = Screen(10, 10) -1 18 -1 19 # clear input stream -1 20 while True: -1 21 ch = self.scr.getch(blocking=False) -1 22 if ch is None: -1 23 break -1 24 -1 25 def tearDown(self): -1 26 self.scr.cleanup() -1 27 super(TestCurses, self).setUp()
diff --git a/tests/test_pygame.py b/tests/test_pygame.py
@@ -0,0 +1,25 @@ -1 1 from shared import unittest -1 2 from shared import PyKeyboard -1 3 import shared_core -1 4 -1 5 try: -1 6 from dirtywords.pygame_core import Screen -1 7 from dirtywords.pygame_core import pygame -1 8 except ImportError: -1 9 pygame = None -1 10 -1 11 -1 12 @unittest.skipIf(pygame is None, 'pygame not available') -1 13 @unittest.skipIf(PyKeyboard is None, 'PyUserInput not available') -1 14 class TestPygame(shared_core.TestCore): -1 15 def setUp(self): -1 16 super(TestPygame, self).setUp() -1 17 self.scr = Screen(10, 10) -1 18 -1 19 def tearDown(self): -1 20 self.scr.cleanup() -1 21 super(TestPygame, self).setUp() -1 22 -1 23 @unittest.expectedFailure -1 24 def test_getch_upper_ascii(self): -1 25 super(TestPygame, self).test_getch_upper_ascii()
diff --git a/tests/test_stupid.py b/tests/test_stupid.py
@@ -0,0 +1,21 @@ -1 1 from shared import unittest -1 2 from shared import PyKeyboard -1 3 import shared_core -1 4 -1 5 try: -1 6 from dirtywords.stupid_core import Screen -1 7 stupid = True -1 8 except ImportError: -1 9 stupid = None -1 10 -1 11 -1 12 @unittest.skipIf(stupid is None, 'stupid not available') -1 13 @unittest.skipIf(PyKeyboard is None, 'PyUserInput not available') -1 14 class TestStupid(shared_core.TestCore): -1 15 def setUp(self): -1 16 super(TestStupid, self).setUp() -1 17 self.scr = Screen(10, 10) -1 18 -1 19 def tearDown(self): -1 20 self.scr.cleanup() -1 21 super(TestStupid, self).setUp()