commit 0a87754f0a597be30a8114091f0bd2dcdc24048b Author: Damian Johnson atagar@torproject.org Date: Thu Jul 21 09:38:55 2016 -0700
Make test dimensions a constant
It's a static tuple value. This should be a constant. --- nyx/curses.py | 16 +++++++--------- test/subwindow.py | 37 +++++++++++++++++-------------------- 2 files changed, 24 insertions(+), 29 deletions(-)
diff --git a/nyx/curses.py b/nyx/curses.py index 004a480..e87239c 100644 --- a/nyx/curses.py +++ b/nyx/curses.py @@ -336,16 +336,14 @@ def _handle_key(textbox, key):
def _handle_history_key(next_handler, backlog, textbox, key): """ - Handles history validation. When the up/down arrow keys are pressed, - the relative previous/next commands are shown. + Allows user to select previous inputs when pressing up/down.
:param func next_handler: handler to invoke after this - :param list backlog: backlog of all previous commands entered + :param list backlog: backlog of all previous commands :param Textbox textbox: current textbox context :param int key: key pressed
- :returns: **None** if up/down arrow key is pressed or calls function - to write key to the textbox + :returns: **None** if up/down is pressed, otherwise invokes next handler """
global HISTORY_DICT @@ -382,16 +380,15 @@ def _handle_history_key(next_handler, backlog, textbox, key):
def _handle_tab_completion(next_handler, tab_completion, textbox, key): """ - Handles tab completion. If the tab key is pressed, the current textbox - contents are checked for probable commands. + Allows user to tab complete commands if sufficient context is provided to + narrow to a single option.
:param func next_handler: handler to invoke after this :param func tab_completion: function to suggest inputs to tab complete with :param Textbox textbox: current textbox context :param int key: key pressed
- :returns: **None** when tab key is pressed or calls function to handle - history validation + :returns: **None** when tab is pressed, otherwise invokes next handler """
if key == 9: @@ -403,6 +400,7 @@ def _handle_tab_completion(next_handler, tab_completion, textbox, key): new_input = matches[0] elif len(matches) > 1: common_prefix = os.path.commonprefix(matches) + if common_prefix != current_contents: new_input = common_prefix
diff --git a/test/subwindow.py b/test/subwindow.py index 559c451..2a03007 100644 --- a/test/subwindow.py +++ b/test/subwindow.py @@ -69,6 +69,7 @@ EXPECTED_SCROLLBAR_BOTTOM = """ """.strip()
NO_OP_HANDLER = lambda key, textbox: None +DIMENSIONS = (40, 80)
class TestCurses(unittest.TestCase): @@ -126,56 +127,53 @@ class TestCurses(unittest.TestCase): self.assertEqual(EXPECTED_SCROLLBAR_BOTTOM, test.render(_draw).content.strip())
def test_handle_key(self): - dimensions = (40, 80) - textbox = Mock() - textbox.win.getyx.return_value = dimensions + textbox.win.getyx.return_value = DIMENSIONS self.assertEqual(curses.ascii.BEL, nyx.curses._handle_key(textbox, 27))
textbox = Mock() - textbox.win.getyx.return_value = dimensions + textbox.win.getyx.return_value = DIMENSIONS textbox.win.move = Mock() - expected_call = call(dimensions[0], 0) + expected_call = call(DIMENSIONS[0], 0) nyx.curses._handle_key(textbox, curses.KEY_HOME) self.assertTrue(textbox.win.move.called) self.assertEquals(expected_call, textbox.win.move.call_args)
textbox = Mock() - textbox.win.getyx.return_value = dimensions + textbox.win.getyx.return_value = DIMENSIONS textbox.gather.return_value = 'Sample Text' textbox.win.move = Mock() - expected_call = call(*dimensions) + expected_call = call(*DIMENSIONS) nyx.curses._handle_key(textbox, curses.KEY_RIGHT) self.assertTrue(textbox.win.move.called) self.assertEquals(expected_call, textbox.win.move.call_args)
textbox = Mock() - textbox.win.getyx.return_value = dimensions + textbox.win.getyx.return_value = DIMENSIONS self.assertEqual(curses.ascii.BEL, nyx.curses._handle_key(textbox, 410))
textbox = Mock() - textbox.win.getyx.return_value = dimensions + textbox.win.getyx.return_value = DIMENSIONS key_pressed = ord('a') self.assertEqual(key_pressed, nyx.curses._handle_key(textbox, key_pressed))
def test_handle_history_key(self): backlog = ['GETINFO version'] - dimensions = (40, 80)
textbox = Mock() - textbox.win.getyx.return_value = dimensions + textbox.win.getyx.return_value = DIMENSIONS self.assertIsNone(nyx.curses._handle_history_key(NO_OP_HANDLER, [], textbox, curses.KEY_UP))
textbox = Mock() - textbox.win.getyx.return_value = dimensions - textbox.win.getmaxyx.return_value = dimensions + textbox.win.getyx.return_value = DIMENSIONS + textbox.win.getmaxyx.return_value = DIMENSIONS textbox.win.addstr = Mock() textbox.win.move = Mock() nyx.curses._handle_history_key(NO_OP_HANDLER, backlog, textbox, curses.KEY_UP) self.assertTrue(textbox.win.clear.called) - expected_addstr_call = call(dimensions[0], 0, backlog[0]) + expected_addstr_call = call(DIMENSIONS[0], 0, backlog[0]) self.assertEqual(expected_addstr_call, textbox.win.addstr.call_args) - expected_move_call = call(dimensions[0], len(backlog[0])) + expected_move_call = call(DIMENSIONS[0], len(backlog[0])) self.assertEqual(expected_move_call, textbox.win.move.call_args)
textbox = Mock() @@ -185,19 +183,18 @@ class TestCurses(unittest.TestCase):
@patch('nyx.curses._handle_history_key') def test_handle_tab_completion(self, mock_handle_history_key): - dimensions = (40, 80) tab_completion_content = 'GETINFO version'
textbox = Mock() - textbox.win.getyx.return_value = dimensions - textbox.win.getmaxyx.return_value = dimensions + textbox.win.getyx.return_value = DIMENSIONS + textbox.win.getmaxyx.return_value = DIMENSIONS textbox.win.addstr = Mock() textbox.win.move = Mock() tab_completion = Mock() tab_completion.return_value = [tab_completion_content] nyx.curses._handle_tab_completion(NO_OP_HANDLER, tab_completion, textbox, 9) self.assertTrue(textbox.win.clear.called) - expected_addstr_call = call(dimensions[0], 0, tab_completion_content) + expected_addstr_call = call(DIMENSIONS[0], 0, tab_completion_content) self.assertEqual(expected_addstr_call, textbox.win.addstr.call_args) - expected_move_call = call(dimensions[0], len(tab_completion_content)) + expected_move_call = call(DIMENSIONS[0], len(tab_completion_content)) self.assertTrue(expected_move_call, textbox.win.move.call_args)