commit 0a9fafa62c2857e781e7ba3598f422ceeb65e61a Author: Sambuddha Basu sambuddhabasu1@gmail.com Date: Mon Jul 18 19:27:10 2016 -0700
Moved curses tests to subwindow.py --- nyx/panel/interpreter.py | 10 ++--- test/panel/interpreter.py | 95 +++-------------------------------------------- test/subwindow.py | 83 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+), 95 deletions(-)
diff --git a/nyx/panel/interpreter.py b/nyx/panel/interpreter.py index 9839e90..dfd7480 100644 --- a/nyx/panel/interpreter.py +++ b/nyx/panel/interpreter.py @@ -67,7 +67,7 @@ class InterpreterPanel(panel.Panel): """
def __init__(self): - panel.Panel.__init__(self, 'interpreter') + panel.Panel.__init__(self)
self._is_input_mode = False self._last_content_height = 0 @@ -85,7 +85,7 @@ class InterpreterPanel(panel.Panel):
def key_handlers(self): def _scroll(key): - page_height = self.get_preferred_size()[0] - 1 + page_height = self.get_height() - 1 is_changed = self._scroller.handle_key(key, self._last_content_height, page_height)
if is_changed: @@ -97,8 +97,8 @@ class InterpreterPanel(panel.Panel): while self._is_input_mode: self.redraw(True) _scroll(nyx.curses.KeyInput(curses.KEY_END)) - page_height = self.get_preferred_size()[0] - 1 - user_input = nyx.curses.str_input(len(PROMPT) + self._x_offset, self.top + len(self.prompt_line[-page_height:]), '', list(reversed(self._backlog)), self.autocompleter.matches) + page_height = self.get_height() - 1 + user_input = nyx.curses.str_input(len(PROMPT) + self._x_offset, self.get_top() + len(self.prompt_line[-page_height:]), '', list(reversed(self._backlog)), self.autocompleter.matches) user_input, is_done = user_input.strip(), False
if not user_input: @@ -143,7 +143,7 @@ class InterpreterPanel(panel.Panel): nyx.panel.KeyHandler('arrows', 'scroll up and down', _scroll, key_func = lambda key: key.is_scroll()), )
- def draw(self, subwindow): + def _draw(self, subwindow): scroll = self._scroller.location(self._last_content_height, subwindow.height - 1)
if self._last_content_height > subwindow.height - 1: diff --git a/test/panel/interpreter.py b/test/panel/interpreter.py index 5a793ca..5383777 100644 --- a/test/panel/interpreter.py +++ b/test/panel/interpreter.py @@ -4,14 +4,10 @@ Unit tests for nyx.panel.interpreter.
import unittest
-import curses -import curses.ascii import nyx.curses import nyx.panel.interpreter import test
-from mock import call, Mock, patch - EXPECTED_PANEL = """ Control Interpreter:
to use this panel press enter
@@ -61,30 +57,26 @@ class TestInterpreter(unittest.TestCase): self.assertEqual(('>>> ', 'Green', 'Bold'), output[0]) self.assertEqual(('/help', 'Magenta', 'Bold'), output[1])
- def test_panel_name(self): - panel = nyx.panel.interpreter.InterpreterPanel() - self.assertEqual(panel.get_name(), 'interpreter') - def test_rendering_panel(self): panel = nyx.panel.interpreter.InterpreterPanel() - self.assertEqual(EXPECTED_PANEL, test.render(panel.draw).content) + self.assertEqual(EXPECTED_PANEL, test.render(panel._draw).content)
panel._is_input_mode = True - self.assertEqual(EXPECTED_PANEL_INPUT_MODE, test.render(panel.draw).content) + self.assertEqual(EXPECTED_PANEL_INPUT_MODE, test.render(panel._draw).content)
def test_rendering_multiline_panel(self): panel = nyx.panel.interpreter.InterpreterPanel() panel.prompt_line = [[('>>> ', 'Green', 'Bold'), ('GETINFO', 'Green', 'Bold'), (' version', 'Cyan')]] panel.prompt_line.append([('250-version=0.2.4.27 (git-412e3f7dc9c6c01a)', 'Blue')]) - self.assertEqual(EXPECTED_MULTILINE_PANEL, test.render(panel.draw).content) + self.assertEqual(EXPECTED_MULTILINE_PANEL, test.render(panel._draw).content)
def test_scrollbar(self): panel = nyx.panel.interpreter.InterpreterPanel() self.assertIsInstance(panel._scroller, nyx.curses.Scroller)
- height = panel.get_preferred_size()[0] + height = panel.get_height() panel._last_content_height = height - output_lines = test.render(panel.draw).content.split('\n') + output_lines = test.render(panel._draw).content.split('\n') self.assertEqual(height, len(output_lines)) self.assertEqual(EXPECTED_SCROLLBAR_PANEL, output_lines[1])
@@ -94,80 +86,3 @@ class TestInterpreter(unittest.TestCase): self.assertEqual(2, len(output)) self.assertEqual('enter', output[0].key) self.assertEqual('arrows', output[1].key) - - def test_str_input_handle_key(self): - dimensions = (40, 80) - - textbox = Mock() - textbox.win.getyx.return_value = dimensions - self.assertEqual(curses.ascii.BEL, nyx.curses.str_input_handle_key(textbox, 27)) - - textbox = Mock() - textbox.win.getyx.return_value = dimensions - textbox.win.move = Mock() - expected_call = call(dimensions[0], 0) - nyx.curses.str_input_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.gather.return_value = 'Sample Text' - textbox.win.move = Mock() - expected_call = call(*dimensions) - nyx.curses.str_input_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 - self.assertEqual(curses.ascii.BEL, nyx.curses.str_input_handle_key(textbox, 410)) - - textbox = Mock() - textbox.win.getyx.return_value = dimensions - key_pressed = ord('a') - self.assertEqual(key_pressed, nyx.curses.str_input_handle_key(textbox, key_pressed)) - - @patch('nyx.curses.str_input_handle_key') - def test_str_input_handle_history_key(self, mock_str_input_handle_key): - backlog = ['GETINFO version'] - dimensions = (40, 80) - - textbox = Mock() - textbox.win.getyx.return_value = dimensions - self.assertIsNone(nyx.curses.str_input_handle_history_key(textbox, curses.KEY_UP, [])) - - textbox = Mock() - textbox.win.getyx.return_value = dimensions - textbox.win.getmaxyx.return_value = dimensions - textbox.win.addstr = Mock() - textbox.win.move = Mock() - nyx.curses.str_input_handle_history_key(textbox, curses.KEY_UP, backlog) - self.assertTrue(textbox.win.clear.called) - 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])) - self.assertEqual(expected_move_call, textbox.win.move.call_args) - - textbox = Mock() - nyx.curses.str_input_handle_history_key(textbox, curses.KEY_LEFT, []) - self.assertTrue(mock_str_input_handle_key.called) - - @patch('nyx.curses.str_input_handle_history_key') - def test_str_input_handle_tab_completion(self, mock_str_input_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.addstr = Mock() - textbox.win.move = Mock() - tab_completion = Mock() - tab_completion.return_value = [tab_completion_content] - nyx.curses.str_input_handle_tab_completion(textbox, 9, [], tab_completion) - self.assertTrue(textbox.win.clear.called) - 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)) - self.assertTrue(expected_move_call, textbox.win.move.call_args) diff --git a/test/subwindow.py b/test/subwindow.py index 7f428e2..0f6f6a6 100644 --- a/test/subwindow.py +++ b/test/subwindow.py @@ -5,8 +5,14 @@ Unit tests for nyx.curses. Not entirely sure why this file can't be called
import unittest
+import curses +import curses.ascii +import nyx.curses +import nyx.panel.interpreter import test
+from mock import call, Mock, patch + from test import require_curses
EXPECTED_ADDSTR_WRAP = """ @@ -116,3 +122,80 @@ class TestCurses(unittest.TestCase): subwindow.scrollbar(15, 21, 30, fill_char = '*')
self.assertEqual(EXPECTED_SCROLLBAR_BOTTOM, test.render(_draw).content.strip()) + + def test_str_input_handle_key(self): + dimensions = (40, 80) + + textbox = Mock() + textbox.win.getyx.return_value = dimensions + self.assertEqual(curses.ascii.BEL, nyx.curses.str_input_handle_key(textbox, 27)) + + textbox = Mock() + textbox.win.getyx.return_value = dimensions + textbox.win.move = Mock() + expected_call = call(dimensions[0], 0) + nyx.curses.str_input_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.gather.return_value = 'Sample Text' + textbox.win.move = Mock() + expected_call = call(*dimensions) + nyx.curses.str_input_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 + self.assertEqual(curses.ascii.BEL, nyx.curses.str_input_handle_key(textbox, 410)) + + textbox = Mock() + textbox.win.getyx.return_value = dimensions + key_pressed = ord('a') + self.assertEqual(key_pressed, nyx.curses.str_input_handle_key(textbox, key_pressed)) + + @patch('nyx.curses.str_input_handle_key') + def test_str_input_handle_history_key(self, mock_str_input_handle_key): + backlog = ['GETINFO version'] + dimensions = (40, 80) + + textbox = Mock() + textbox.win.getyx.return_value = dimensions + self.assertIsNone(nyx.curses.str_input_handle_history_key(textbox, curses.KEY_UP, [])) + + textbox = Mock() + textbox.win.getyx.return_value = dimensions + textbox.win.getmaxyx.return_value = dimensions + textbox.win.addstr = Mock() + textbox.win.move = Mock() + nyx.curses.str_input_handle_history_key(textbox, curses.KEY_UP, backlog) + self.assertTrue(textbox.win.clear.called) + 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])) + self.assertEqual(expected_move_call, textbox.win.move.call_args) + + textbox = Mock() + nyx.curses.str_input_handle_history_key(textbox, curses.KEY_LEFT, []) + self.assertTrue(mock_str_input_handle_key.called) + + @patch('nyx.curses.str_input_handle_history_key') + def test_str_input_handle_tab_completion(self, mock_str_input_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.addstr = Mock() + textbox.win.move = Mock() + tab_completion = Mock() + tab_completion.return_value = [tab_completion_content] + nyx.curses.str_input_handle_tab_completion(textbox, 9, [], tab_completion) + self.assertTrue(textbox.win.clear.called) + 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)) + self.assertTrue(expected_move_call, textbox.win.move.call_args)