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_add_repl_already_exists(): """ Ensure the editor raises a RuntimeError if the repl already exists. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.repl = True with pytest.raises(RuntimeError): mm.add_repl()
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_mode_toggle_repl_on(): """ There is no repl, so toggle on. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.add_repl = mock.MagicMock() mm.repl = None mm.toggle_repl(None) assert mm.add_repl.call_count == 1
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_mode_toggle_repl_on(): """ There is no repl, so toggle on. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.add_repl = mock.MagicMock() mm.repl = None mm.toggle_repl(None) assert mm.add_repl.call_count == 1
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_plotter_active_repl(): """ When removing the plotter, if the repl is active, retain the connection. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.connection = mock.MagicMock() mm.repl = True mm.remove_plotter() assert mm.plotter is False assert mm.connection is not None
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_plotter_disconnects(): """ Ensure that connections are closed when plotter is closed. """ editor = mock.MagicMock() view = mock.MagicMock() mm = MicroPythonMode(editor, view) mm.repl = False mm.plotter = True mock_repl_connection = mock.MagicMock() mm.connection = mock_repl_connection mm.remove_plotter() mock_repl_connection.close.assert_called_once_with() assert mm.connection is 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_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()