def test_micropython_mode_remove_repl_is_none(): """ If there's no repl to remove raise a RuntimeError. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.repl = None with pytest.raises(RuntimeError): mm.remove_repl()
def test_micropython_mode_remove_repl(): """ If there is a repl, make sure it's removed as expected and the state is updated. """ editor = mock.MagicMock() view = mock.MagicMock() view.remove_repl = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.repl = True mm.remove_repl() assert view.remove_repl.call_count == 1 assert mm.repl is False
def test_micropython_mode_remove_repl_active_plotter(): """ When removing the repl, if the plotter is active, retain the connection. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.connection = mock.MagicMock() mm.plotter = True mm.remove_repl() assert mm.repl is False assert mm.connection is not None
def test_micropython_mode_remove_repl_and_disconnect(): """ If there is a repl, make sure it's removed as expected and the state is updated. Disconnect any open serial connection. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.repl = True mm.plotter = False mock_repl_connection = mock.MagicMock() mm.connection = mock_repl_connection mm.remove_repl() mock_repl_connection.close.assert_called_once_with() assert mm.connection is None
def test_micropython_mode_toggle_repl_off(): """ There is a repl, so toggle off. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.remove_repl = mock.MagicMock() mm.repl = True mm.toggle_repl(None) assert mm.remove_repl.call_count == 1
def test_micropython_on_data_flood(): """ Ensure that the REPL is removed before calling the base on_data_flood method. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.remove_repl = mock.MagicMock() with mock.patch('builtins.super') as mock_super: mm.on_data_flood() mm.remove_repl.assert_called_once_with() mock_super().on_data_flood.assert_called_once_with()
def test_micropython_deactivate(): """ Ensure REPL/Plotter and device_selector is hidden, when MicroPython-mode is deactivated. """ editor = mock.MagicMock() view = mock.MagicMock() view.show_device_selector = mock.MagicMock() view.hide_device_selector = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.remove_repl = mock.MagicMock() mm.remove_plotter = mock.MagicMock() mm.activate() mm.repl = True mm.plotter = True mm.deactivate() view.hide_device_selector.assert_called_once_with() mm.remove_repl.assert_called_once_with() mm.remove_plotter.assert_called_once_with()
def test_micropython_device_changed(microbit): """ Ensure REPL/Plotter and connection are reconnected, when the user changes device. """ editor = mock.MagicMock() view = mock.MagicMock() view.show_device_selector = mock.MagicMock() view.hide_device_selector = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.add_repl = mock.MagicMock() mm.add_plotter = mock.MagicMock() mm.remove_repl = mock.MagicMock() mm.remove_plotter = mock.MagicMock() mm.repl = True mm.plotter = True mm.connection = mock.MagicMock() mm.activate() mm.device_changed(microbit) mm.add_repl.assert_called_once_with() mm.add_plotter.assert_called_once_with() mm.remove_repl.assert_called_once_with() mm.remove_plotter.assert_called_once_with() mm.connection.send_interrupt.assert_called_once_with()