def test_search_interface(self): with mocks.mocked_up_actual_fe_window(window.Window) as w: self.assertRaises(NotImplementedError, lambda: w.find('foo')) self.assertRaises(NotImplementedError, lambda: w.match('foo')) self.assertRaises(NotImplementedError, w.beginning) self.assertRaises(NotImplementedError, w.end) self.assertEqual(w.make_mark(None), None)
def test_quit(self): with mocks.mocked_up_actual_fe_window(window.Window) as w: loop = asyncio.get_event_loop() self.assertFalse(loop._stopping) w.quit() self.assertTrue(loop._stopping) loop.run_forever() self.assertFalse(loop._stopping)
def test(self): with mocks.mocked_up_actual_fe_window(window.Window, window.StatusLine) as w: s = w.context.status self.assertEqual([ Chunk([(('visible', ), ''), ((), 'Window'), (('right', ), '1'), ((), 'You'), ((), ' '), ((), 'be'), ((), ' '), ((), 'this'), ((), ' '), (('bold', ), '^Z'), ((), ' suspend'), ((), '\n'), ((), "shouldn't"), ((), ' '), ((), 'seeing'), ((), ' '), (('bold', ), '^X^C'), ((), ' quit'), ((), ' '), (('bold', ), '?'), ((), ' help'), ((), '\n')]) ], [chunk for (mark, chunk) in s.view(0)]) w.context.conf['set'] = {'cheatsheet': False} w.fe.resize_statuswindow() self.assertEqual([ Chunk([ (('visible', ), ''), ((), 'Window'), (('right', ), '1'), ]) ], [chunk for (mark, chunk) in s.view(0)]) s.message('X' * 80) self.assertEqual([ Chunk([ ({'visible'}, ''), ({'fg:white', 'bg:red'}, '…' + ('X' * 77)), ({'right'}, '1'), ]) ], [chunk.tagsets() for (mark, chunk) in s.view(0)]) # defensiveness time class W2(window.Window): def modeline(self): return None, [] s.clear() w.fe.split_window(W2(w.fe), True) self.assertEqual([[ ({'visible'}, ''), ]], [chunk for (mark, chunk) in s.view(0)]) w.fe.output = 99 self.assertEqual([ Chunk([ (('visible', ), ''), ((), 'StatusLine'), (('right', ), '1'), ]) ], [chunk for (mark, chunk) in s.view(0)])
def test_misc(self): called = False def destroy_cb(): nonlocal called called = True with mocks.mocked_up_actual_fe_window( lambda fe: window.Window(fe, destroy=destroy_cb)) as w: self.assertEqual(w.focus(), True) w.destroy() self.assertEqual(called, True) self.assertEqual(w.title(), 'Window') self.assertEqual(w.modeline(), ( [(set(), 'Window')], [({'right'}, '1')]))
async def test_input_char(self): with mocks.mocked_up_actual_fe_window(window.Window) as w: w.fe.supervisor = await imbroglio.get_supervisor() save = [] w.intermediate_action = ( lambda keystroke=None: save.append(keystroke)) with self.assertLogs(w.log.name, level='ERROR'): w.input_char('x') self.assertEqual(w.context._message, 'unknown command') w.keyerror_action = lambda k: save.append('E' + k) w.input_char('x') self.assertEqual(save, ['x', 'x', 'Ex']) w.keymap['y'] = lambda: save.append('y') w.input_char('y') self.assertEqual(save, ['x', 'x', 'Ex', 'y', 'y']) w.intermediate_action = None w.keymap['z'] = keymap.Keymap() w.keymap['z']['Z'] = lambda: save.append('z') w.input_char('z') w.input_char('Z') self.assertEqual(save, ['x', 'x', 'Ex', 'y', 'y', 'z']) async def key_action(): save.append('0') w.keymap['0'] = key_action self.assertFalse(w.tasks) w.input_char('0') self.assertTrue(w.tasks) await w.tasks[0] self.assertEqual(save, ['x', 'x', 'Ex', 'y', 'y', 'z', '0']) w.keymap['1'] = lambda: {}[None] with self.assertLogs(w.log, logging.ERROR): w.input_char('1') async def key_raises(): {}[None] w.keymap['2'] = key_raises w.input_char('2') with self.assertLogs(w.log, logging.ERROR): await w.tasks[0]
def test_input_char(self): with mocks.mocked_up_actual_fe_window(window.Window) as w: save = [] w.intermediate_action = ( lambda keystroke=None: save.append(keystroke)) with self.assertLogs(w.log.name, level='ERROR'): w.input_char('x') self.assertEqual(w.context._message, 'unknown command') w.keyerror_action = lambda k: save.append('E' + k) w.input_char('x') self.assertEqual(save, ['x', 'x', 'Ex']) w.keymap['y'] = lambda: save.append('y') w.input_char('y') self.assertEqual(save, ['x', 'x', 'Ex', 'y', 'y']) w.intermediate_action = None w.keymap['z'] = keymap.Keymap() w.keymap['z']['Z'] = lambda: save.append('z') w.input_char('z') w.input_char('Z') self.assertEqual(save, ['x', 'x', 'Ex', 'y', 'y', 'z']) w.keymap['0'] = asyncio.coroutine(lambda: save.append('0')) self.assertFalse(w.tasks) w.input_char('0') self.assertTrue(w.tasks) loop = asyncio.get_event_loop() loop.run_until_complete(w.tasks[0]) self.assertEqual(save, ['x', 'x', 'Ex', 'y', 'y', 'z', '0']) w.keymap['1'] = lambda: {}[None] with self.assertLogs(w.log, logging.ERROR): w.input_char('1') w.keymap['2'] = asyncio.coroutine(lambda: {}[None]) w.input_char('2') with self.assertLogs(w.log, logging.ERROR): loop.run_until_complete(w.tasks[0])
def test_input_char(self): with mocks.mocked_up_actual_fe_window(window.Window) as w: save = [] w.intermediate_action = ( lambda keystroke=None: save.append(keystroke)) with self.assertLogs(w.log.name, level='ERROR'): w.input_char('x') self.assertEqual(w.context._message, 'unknown command') w.keyerror_action = lambda k: save.append('E' + k) w.input_char('x') self.assertEqual(save, ['x', 'x', 'Ex']) w.keymap['y'] = lambda: save.append('y') w.input_char('y') self.assertEqual(save, ['x', 'x', 'Ex', 'y', 'y']) w.intermediate_action = None w.keymap['z'] = keymap.Keymap() w.keymap['z']['Z'] = lambda: save.append('z') w.input_char('z') w.input_char('Z') self.assertEqual(save, ['x', 'x', 'Ex', 'y', 'y', 'z'])
def test_prototype_buf(self): with mocks.mocked_up_actual_fe_window(repl.REPL) as w: w.split_window() for x in w.fe.windows: self.assertIs(w.state, x.window.state)
def test_enlarge_windows(self): with mocks.mocked_up_actual_fe_window(window.Window) as w: w.split_window() w.enlarge_window() self.assertEqual([w.height for w in w.fe.windows], [13, 11])
def test_balance_windows(self): with mocks.mocked_up_actual_fe_window(window.Window) as w: w.split_window() w.split_window() w.balance_windows() self.assertEqual([w.height for w in w.fe.windows], [8, 8, 8])
def test_quit(self): with mocks.mocked_up_actual_fe_window(window.Window) as w: self.assertFalse(w.fe.quit) w.quit() self.assertTrue(w.fe.quit)
def test(self): with mocks.mocked_up_actual_fe_window( window.Window, window.StatusLine) as w: s = w.context.status self.assertEqual([Chunk([ (('visible',), ''), ((), 'Window'), (('right',), '1'), ((), 'You'), ((), ' '), ((), 'be'), ((), ' '), ((), 'this'), ((), ' '), (('bold',), '^Z'), ((), ' suspend'), ((), '\n'), ((), "shouldn't"), ((), ' '), ((), 'seeing'), ((), ' '), (('bold',), '^X^C'), ((), ' quit'), ((), ' '), (('bold',), '?'), ((), ' help'), ((), '\n') ])], [chunk for (mark, chunk) in s.view(0)]) w.context.conf['set'] = {'cheatsheet': False} w.fe.resize_statuswindow() self.assertEqual([Chunk([ (('visible',), ''), ((), 'Window'), (('right',), '1'), ])], [chunk for (mark, chunk) in s.view(0)]) s.message('X' * 80) self.assertEqual([Chunk([ ({'visible'}, ''), ({'fg:white', 'bg:red'}, '…' + ('X' * 77)), ({'right'}, '1'), ])], [chunk.tagsets() for (mark, chunk) in s.view(0)]) # defensiveness time class W2(window.Window): def modeline(self): return None, [] s.clear() w.fe.split_window(W2(w.fe), True) self.assertEqual([[ ({'visible'}, ''), ]], [chunk for (mark, chunk) in s.view(0)]) w.fe.output = 99 self.assertEqual([Chunk([ (('visible',), ''), ((), 'StatusLine'), (('right',), '1'), ])], [chunk for (mark, chunk) in s.view(0)])
def test_prototype(self): with mocks.mocked_up_actual_fe_window(snipe.editor.Viewer) as w: w.split_window() for x in w.fe.windows: self.assertIs(w.buf, x.window.buf)