diff options
Diffstat (limited to 'urwid/tests/test_escapes.py')
-rw-r--r-- | urwid/tests/test_escapes.py | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/urwid/tests/test_escapes.py b/urwid/tests/test_escapes.py new file mode 100644 index 0000000..7b1fe53 --- /dev/null +++ b/urwid/tests/test_escapes.py @@ -0,0 +1,79 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +""" Tests covering escape sequences processing """ + +import unittest + +import urwid.escape + + +class InputEscapeSequenceParserTest(unittest.TestCase): + """ Tests for parser of input escape sequences """ + + def test_bare_escape(self): + codes = [27] + expected = ['esc'] + actual, rest = urwid.escape.process_keyqueue(codes, more_available=False) + self.assertListEqual(expected, actual) + self.assertListEqual([], rest) + + def test_meta(self): + codes = [27, ord('4'), ord('2')] + expected = ['meta 4'] + actual, rest = urwid.escape.process_keyqueue(codes, more_available=False) + self.assertListEqual(expected, actual) + self.assertListEqual([ord('2')], rest) + + def test_shift_arrows(self): + codes = [27, ord('['), ord('a')] + expected = ['shift up'] + actual, rest = urwid.escape.process_keyqueue(codes, more_available=False) + self.assertListEqual(expected, actual) + self.assertListEqual([], rest) + + def test_ctrl_pgup(self): + codes = [27, 91, 53, 59, 53, 126] + expected = ['ctrl page up'] + actual, rest = urwid.escape.process_keyqueue(codes, more_available=False) + self.assertListEqual(expected, actual) + self.assertListEqual([], rest) + + def test_esc_meta_1(self): + codes = [27, 27, 49] + expected = ['esc', 'meta 1'] + actual, rest = urwid.escape.process_keyqueue(codes, more_available=False) + self.assertListEqual(expected, actual) + self.assertListEqual([], rest) + + def test_midsequence(self): + # '[11~' is F1, '[12~' is F2, etc + codes = [27, ord('['), ord('1')] + + with self.assertRaises(urwid.escape.MoreInputRequired): + urwid.escape.process_keyqueue(codes, more_available=True) + + actual, rest = urwid.escape.process_keyqueue(codes, more_available=False) + self.assertListEqual(['meta ['], actual) + self.assertListEqual([ord('1')], rest) + + def test_mouse_press(self): + codes = [27, 91, 77, 32, 41, 48] + expected = [('mouse press', 1.0, 8, 15)] + actual, rest = urwid.escape.process_keyqueue(codes, more_available=False) + self.assertListEqual(expected, actual) + self.assertListEqual([], rest) + + def test_bug_104(self): + """ GH #104: click-Esc & Esc-click crashes urwid apps """ + codes = [27, 27, 91, 77, 32, 127, 59] + expected = ['esc', ('mouse press', 1.0, 94, 26)] + actual, rest = urwid.escape.process_keyqueue(codes, more_available=False) + self.assertListEqual(expected, actual) + self.assertListEqual([], rest) + + codes = [27, 27, 91, 77, 35, 120, 59] + expected = ['esc', ('mouse release', 0, 87, 26)] + actual, rest = urwid.escape.process_keyqueue(codes, more_available=False) + self.assertListEqual(expected, actual) + self.assertListEqual([], rest) |