dirtywords

portable text interface framework  https://pypi.python.org/pypi/dirtywords
git clone https://git.ce9e.org/dirtywords.git

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()