def test_undo_multiple_input_lines(self): """Test udoing a line of a multiple lines command in ipython.""" with ActualUndo(80, 30) as t: # type some commands tmux.send_command(t, 'ipy', prompt=IPyPrompt.in_formatted(1)) tmux.send_command(t, 'def foo():', prompt=IPyPrompt.new_l_formatted()) tmux.send_command(t, 'print "hi"', prompt=IPyPrompt.new_l_formatted()) tmux.send_command(t, ' ', prompt=IPyPrompt.in_formatted(2)) tmux.send_command(t, 'foo()', prompt=IPyPrompt.in_formatted(3)) output = tmux.visible_without_formatting(t) lines = [IPyPrompt.in_prompt(1) + ' def foo():', IPyPrompt.new_l_prompt() + ' print "hi"', IPyPrompt.new_l_prompt() + '', IPyPrompt.in_prompt(2) + ' foo()', 'hi', IPyPrompt.in_prompt(3)] self.assertEqual(output[-6:], lines) # undo tmux.send_command(t, 'undo', prompt=IPyPrompt.in_formatted(2)) output = tmux.visible_without_formatting(t) self.assertEqual(output[-4:], lines[:3] + [IPyPrompt.in_prompt(2)]) # undo again tmux.send_command(t, 'undo', prompt=IPyPrompt.new_l_formatted()) output = tmux.visible_without_formatting(t) self.assertEqual(output[-3:], lines[:2] + [IPyPrompt.new_l_prompt()])
def test_undo_simple(self): """Test undoing one liner command in ipython.""" with ActualUndo(80, 30) as t: # type some commands tmux.send_command(t, 'ipy', prompt=IPyPrompt.in_formatted(1)) tmux.send_command(t, 'a = 1', prompt=IPyPrompt.in_formatted(2)) tmux.send_command(t, 'a', prompt=IPyPrompt.in_formatted(3)) output = tmux.visible_without_formatting(t) lines = [IPyPrompt.in_prompt(1) + ' a = 1', IPyPrompt.in_prompt(2) + ' a', IPyPrompt.out_prompt(2) + ' 1', IPyPrompt.in_prompt(3)] self.assertEqual(output[-4:], lines) # undo tmux.send_command(t, 'undo', prompt=IPyPrompt.in_formatted(2)) output = tmux.visible_without_formatting(t) self.assertEqual(output[-2:], lines[:1] + [IPyPrompt.in_prompt(2)])