home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_2358 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  12.2 KB  |  380 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import sys
  5. import unittest
  6. import pdb
  7. sys.path.append('../..')
  8. from pyreadline.modes.emacs import *
  9. from pyreadline import keysyms
  10. from pyreadline.lineeditor import lineobj
  11. from common import *
  12. from pyreadline.logger import log_sock
  13. import pyreadline.logger as logger
  14. logger.sock_silent = True
  15. logger.show_event = [
  16.     'debug']
  17.  
  18. class EmacsModeTest(EmacsMode):
  19.     tested_commands = { }
  20.     
  21.     def __init__(self):
  22.         EmacsMode.__init__(self, MockReadline())
  23.         self.mock_console = MockConsole()
  24.         self.init_editing_mode(None)
  25.         self.lst_completions = []
  26.         self.completer = self.mock_completer
  27.         self.completer_delims = ' '
  28.         self.tabstop = 4
  29.         self.mark_directories = False
  30.         self.show_all_if_ambiguous = False
  31.  
  32.     
  33.     def get_mock_console(self):
  34.         return self.mock_console
  35.  
  36.     console = property(get_mock_console)
  37.     
  38.     def _set_line(self, text):
  39.         self.l_buffer.set_line(text)
  40.  
  41.     
  42.     def get_line(self):
  43.         return self.l_buffer.get_line_text()
  44.  
  45.     line = property(get_line)
  46.     
  47.     def get_line_cursor(self):
  48.         return self.l_buffer.point
  49.  
  50.     line_cursor = property(get_line_cursor)
  51.     
  52.     def input(self, keytext):
  53.         for key in lst_key:
  54.             (keyinfo, event) = keytext_to_keyinfo_and_event(key)
  55.             dispatch_func = self.key_dispatch.get(keyinfo.tuple(), self.self_insert)
  56.             self.tested_commands[dispatch_func.__name__] = dispatch_func
  57.             log_sock('keydisp: %s %s' % (key, dispatch_func.__name__), 'debug')
  58.             dispatch_func(event)
  59.             self.previous_func = dispatch_func
  60.         
  61.  
  62.     
  63.     def accept_line(self, e):
  64.         if EmacsMode.accept_line(self, e):
  65.             self.l_buffer.reset_line()
  66.         
  67.  
  68.     
  69.     def mock_completer(self, text, state):
  70.         return self.lst_completions[state]
  71.  
  72.  
  73.  
  74. class TestsKeyinfo(unittest.TestCase):
  75.     
  76.     def test_keyinfo(self):
  77.         (keyinfo, event) = keytext_to_keyinfo_and_event('"d"')
  78.         self.assertEqual('d', event.char)
  79.         (keyinfo, event) = keytext_to_keyinfo_and_event('"D"')
  80.         self.assertEqual('D', event.char)
  81.         (keyinfo, event) = keytext_to_keyinfo_and_event('"$"')
  82.         self.assertEqual('$', event.char)
  83.         (keyinfo, event) = keytext_to_keyinfo_and_event('Escape')
  84.         self.assertEqual('\x1b', event.char)
  85.  
  86.  
  87.  
  88. class TestsMovement(unittest.TestCase):
  89.     
  90.     def test_cursor(self):
  91.         r = EmacsModeTest()
  92.         self.assertEqual(r.line, '')
  93.         r.input('"First Second Third"')
  94.         self.assertEqual(r.line, 'First Second Third')
  95.         self.assertEqual(r.line_cursor, 18)
  96.         r.input('Control-a')
  97.         self.assertEqual(r.line, 'First Second Third')
  98.         self.assertEqual(r.line_cursor, 0)
  99.         r.input('Control-e')
  100.         self.assertEqual(r.line, 'First Second Third')
  101.         self.assertEqual(r.line_cursor, 18)
  102.         r.input('Home')
  103.         self.assertEqual(r.line, 'First Second Third')
  104.         self.assertEqual(r.line_cursor, 0)
  105.         r.input('Right')
  106.         self.assertEqual(r.line, 'First Second Third')
  107.         self.assertEqual(r.line_cursor, 1)
  108.         r.input('Ctrl-f')
  109.         self.assertEqual(r.line, 'First Second Third')
  110.         self.assertEqual(r.line_cursor, 2)
  111.         r.input('Ctrl-Right')
  112.         self.assertEqual(r.line, 'First Second Third')
  113.         self.assertEqual(r.line_cursor, 5)
  114.         r.input('Ctrl-Right')
  115.         self.assertEqual(r.line, 'First Second Third')
  116.         self.assertEqual(r.line_cursor, 12)
  117.         r.input('Ctrl-Right')
  118.         self.assertEqual(r.line, 'First Second Third')
  119.         self.assertEqual(r.line_cursor, 18)
  120.         r.input('Ctrl-Right')
  121.         self.assertEqual(r.line, 'First Second Third')
  122.         self.assertEqual(r.line_cursor, 18)
  123.         r.input('Ctrl-Left')
  124.         self.assertEqual(r.line, 'First Second Third')
  125.         self.assertEqual(r.line_cursor, 13)
  126.         r.input('Ctrl-Left')
  127.         self.assertEqual(r.line, 'First Second Third')
  128.         self.assertEqual(r.line_cursor, 6)
  129.         r.input('Ctrl-Left')
  130.         self.assertEqual(r.line, 'First Second Third')
  131.         self.assertEqual(r.line_cursor, 0)
  132.         r.input('Ctrl-Left')
  133.         self.assertEqual(r.line, 'First Second Third')
  134.         self.assertEqual(r.line_cursor, 0)
  135.  
  136.  
  137.  
  138. class TestsDelete(unittest.TestCase):
  139.     
  140.     def test_delete(self):
  141.         r = EmacsModeTest()
  142.         self.assertEqual(r.line, '')
  143.         r.input('"First Second Third"')
  144.         self.assertEqual(r.line, 'First Second Third')
  145.         self.assertEqual(r.line_cursor, 18)
  146.         r.input('Delete')
  147.         self.assertEqual(r.line, 'First Second Third')
  148.         self.assertEqual(r.line_cursor, 18)
  149.         r.input('Left')
  150.         r.input('Left')
  151.         r.input('Delete')
  152.         self.assertEqual(r.line, 'First Second Thid')
  153.         self.assertEqual(r.line_cursor, 16)
  154.         r.input('Delete')
  155.         self.assertEqual(r.line, 'First Second Thi')
  156.         self.assertEqual(r.line_cursor, 16)
  157.         r.input('Backspace')
  158.         self.assertEqual(r.line, 'First Second Th')
  159.         self.assertEqual(r.line_cursor, 15)
  160.         r.input('Home')
  161.         r.input('Right')
  162.         r.input('Right')
  163.         self.assertEqual(r.line, 'First Second Th')
  164.         self.assertEqual(r.line_cursor, 2)
  165.         r.input('Backspace')
  166.         self.assertEqual(r.line, 'Frst Second Th')
  167.         self.assertEqual(r.line_cursor, 1)
  168.         r.input('Backspace')
  169.         self.assertEqual(r.line, 'rst Second Th')
  170.         self.assertEqual(r.line_cursor, 0)
  171.         r.input('Backspace')
  172.         self.assertEqual(r.line, 'rst Second Th')
  173.         self.assertEqual(r.line_cursor, 0)
  174.         r.input('Escape')
  175.         self.assertEqual(r.line, '')
  176.         self.assertEqual(r.line_cursor, 0)
  177.  
  178.     
  179.     def test_delete_word(self):
  180.         r = EmacsModeTest()
  181.         self.assertEqual(r.line, '')
  182.         r.input('"First Second Third"')
  183.         self.assertEqual(r.line, 'First Second Third')
  184.         self.assertEqual(r.line_cursor, 18)
  185.         r.input('Control-Backspace')
  186.         self.assertEqual(r.line, 'First Second ')
  187.         self.assertEqual(r.line_cursor, 13)
  188.         r.input('Backspace')
  189.         r.input('Left')
  190.         r.input('Left')
  191.         self.assertEqual(r.line, 'First Second')
  192.         self.assertEqual(r.line_cursor, 10)
  193.         r.input('Control-Backspace')
  194.         self.assertEqual(r.line, 'First nd')
  195.         self.assertEqual(r.line_cursor, 6)
  196.         r.input('Escape')
  197.         self.assertEqual(r.line, '')
  198.         self.assertEqual(r.line_cursor, 0)
  199.         r.input('"First Second Third"')
  200.         r.input('Home')
  201.         r.input('Right')
  202.         r.input('Right')
  203.         r.input('Control-Delete')
  204.         self.assertEqual(r.line, 'FiSecond Third')
  205.         self.assertEqual(r.line_cursor, 2)
  206.         r.input('Control-Delete')
  207.         self.assertEqual(r.line, 'FiThird')
  208.         self.assertEqual(r.line_cursor, 2)
  209.         r.input('Control-Delete')
  210.         self.assertEqual(r.line, 'Fi')
  211.         self.assertEqual(r.line_cursor, 2)
  212.         r.input('Control-Delete')
  213.         self.assertEqual(r.line, 'Fi')
  214.         self.assertEqual(r.line_cursor, 2)
  215.         r.input('Escape')
  216.         self.assertEqual(r.line, '')
  217.         self.assertEqual(r.line_cursor, 0)
  218.  
  219.  
  220.  
  221. class TestsSelectionMovement(unittest.TestCase):
  222.     
  223.     def test_cursor(self):
  224.         r = EmacsModeTest()
  225.         self.assertEqual(r.line, '')
  226.         r.input('"First Second Third"')
  227.         self.assertEqual(r.line, 'First Second Third')
  228.         self.assertEqual(r.line_cursor, 18)
  229.         self.assertEqual(r.l_buffer.selection_mark, -1)
  230.         r.input('Home')
  231.         r.input('Shift-Right')
  232.         self.assertEqual(r.line, 'First Second Third')
  233.         self.assertEqual(r.line_cursor, 1)
  234.         self.assertEqual(r.l_buffer.selection_mark, 0)
  235.         r.input('Shift-Control-Right')
  236.         self.assertEqual(r.line, 'First Second Third')
  237.         self.assertEqual(r.line_cursor, 5)
  238.         self.assertEqual(r.l_buffer.selection_mark, 0)
  239.         r.input('"a"')
  240.         self.assertEqual(r.line, 'a Second Third')
  241.         self.assertEqual(r.line_cursor, 1)
  242.         self.assertEqual(r.l_buffer.selection_mark, -1)
  243.         r.input('Shift-End')
  244.         self.assertEqual(r.line, 'a Second Third')
  245.         self.assertEqual(r.line_cursor, 14)
  246.         self.assertEqual(r.l_buffer.selection_mark, 1)
  247.         r.input('Delete')
  248.         self.assertEqual(r.line, 'a')
  249.         self.assertEqual(r.line_cursor, 1)
  250.         self.assertEqual(r.l_buffer.selection_mark, -1)
  251.  
  252.  
  253.  
  254. class TestsHistory(unittest.TestCase):
  255.     
  256.     def test_history_1(self):
  257.         r = EmacsModeTest()
  258.         r.add_history('aa')
  259.         r.add_history('bbb')
  260.         self.assertEqual(r.line, '')
  261.         r.input('Up')
  262.         self.assertEqual(r.line, 'bbb')
  263.         self.assertEqual(r.line_cursor, 3)
  264.         r.input('Up')
  265.         self.assertEqual(r.line, 'aa')
  266.         self.assertEqual(r.line_cursor, 2)
  267.         r.input('Up')
  268.         self.assertEqual(r.line, 'aa')
  269.         self.assertEqual(r.line_cursor, 2)
  270.         r.input('Down')
  271.         self.assertEqual(r.line, 'bbb')
  272.         self.assertEqual(r.line_cursor, 3)
  273.         r.input('Down')
  274.         self.assertEqual(r.line, '')
  275.         self.assertEqual(r.line_cursor, 0)
  276.  
  277.     
  278.     def test_history_2(self):
  279.         r = EmacsModeTest()
  280.         r.add_history('aaaa')
  281.         r.add_history('aaba')
  282.         r.add_history('aaca')
  283.         r.add_history('akca')
  284.         r.add_history('bbb')
  285.         r.add_history('ako')
  286.         self.assert_line(r, '', 0)
  287.         r.input('"a"')
  288.         r.input('Up')
  289.         self.assert_line(r, 'ako', 1)
  290.         r.input('Up')
  291.         self.assert_line(r, 'akca', 1)
  292.         r.input('Up')
  293.         self.assert_line(r, 'aaca', 1)
  294.         r.input('Up')
  295.         self.assert_line(r, 'aaba', 1)
  296.         r.input('Up')
  297.         self.assert_line(r, 'aaaa', 1)
  298.         r.input('Right')
  299.         self.assert_line(r, 'aaaa', 2)
  300.         r.input('Down')
  301.         self.assert_line(r, 'aaba', 2)
  302.         r.input('Down')
  303.         self.assert_line(r, 'aaca', 2)
  304.         r.input('Down')
  305.         self.assert_line(r, 'aaca', 2)
  306.         r.input('Left')
  307.         r.input('Left')
  308.         r.input('Down')
  309.         r.input('Down')
  310.         self.assert_line(r, 'bbb', 3)
  311.         r.input('Left')
  312.         self.assert_line(r, 'bbb', 2)
  313.         r.input('Down')
  314.         self.assert_line(r, 'bbb', 2)
  315.         r.input('Up')
  316.         self.assert_line(r, 'bbb', 2)
  317.  
  318.     
  319.     def test_history_3(self):
  320.         r = EmacsModeTest()
  321.         r.add_history('aaaa')
  322.         r.add_history('aaba')
  323.         r.add_history('aaca')
  324.         r.add_history('akca')
  325.         r.add_history('bbb')
  326.         r.add_history('ako')
  327.         self.assert_line(r, '', 0)
  328.         r.input('')
  329.         r.input('Up')
  330.         self.assert_line(r, 'ako', 3)
  331.         r.input('Down')
  332.         self.assert_line(r, '', 0)
  333.         r.input('Up')
  334.         self.assert_line(r, 'ako', 3)
  335.  
  336.     
  337.     def test_history_3(self):
  338.         r = EmacsModeTest()
  339.         r.add_history('aaaa')
  340.         r.add_history('aaba')
  341.         r.add_history('aaca')
  342.         r.add_history('akca')
  343.         r.add_history('bbb')
  344.         r.add_history('ako')
  345.         self.assert_line(r, '', 0)
  346.         r.input('k')
  347.         r.input('Up')
  348.         self.assert_line(r, 'k', 1)
  349.  
  350.     
  351.     def test_complete(self):
  352.         import rlcompleter
  353.         logger.sock_silent = False
  354.         log_sock('-' * 50, 'debug')
  355.         r = EmacsModeTest()
  356.         r.completer = rlcompleter.Completer().complete
  357.         r._bind_key('tab', r.complete)
  358.         r.input('"exi(ksdjksjd)"')
  359.         r.input('Control-a')
  360.         r.input('Right')
  361.         r.input('Right')
  362.         r.input('Right')
  363.         r.input('Tab')
  364.         self.assert_line(r, 'exit(ksdjksjd)', 4)
  365.         r.input('Escape')
  366.         r.input('"exi"')
  367.         r.input('Control-a')
  368.         r.input('Right')
  369.         r.input('Right')
  370.         r.input('Right')
  371.         r.input('Tab')
  372.         self.assert_line(r, 'exit', 4)
  373.  
  374.     
  375.     def assert_line(self, r, line, cursor):
  376.         self.assertEqual(r.line, line)
  377.         self.assertEqual(r.line_cursor, cursor)
  378.  
  379.  
  380.