|
12 | 12 | from ndv.controllers import ArrayViewer
|
13 | 13 | from ndv.models._array_display_model import ArrayDisplayModel, ChannelMode
|
14 | 14 | from ndv.models._lut_model import LUTModel
|
| 15 | +from ndv.models._roi_model import RectangularROIModel |
15 | 16 | from ndv.views import _app, gui_frontend
|
16 | 17 | from ndv.views.bases import ArrayView, LutView
|
17 | 18 | from ndv.views.bases._graphics._canvas import ArrayCanvas, HistogramCanvas
|
|
21 | 22 | from ndv.controllers._channel_controller import ChannelController
|
22 | 23 |
|
23 | 24 |
|
24 |
| -def _get_mock_canvas() -> ArrayCanvas: |
| 25 | +def _get_mock_canvas(*_: Any) -> ArrayCanvas: |
25 | 26 | mock = MagicMock(spec=ArrayCanvas)
|
26 | 27 | img_handle = MagicMock(spec=ImageHandle)
|
27 | 28 | img_handle.data.return_value = np.zeros((10, 10)).astype(np.uint8)
|
@@ -205,3 +206,18 @@ def test_array_viewer_with_app() -> None:
|
205 | 206 | if gui_frontend() != _app.GuiFrontend.WX:
|
206 | 207 | visax_mock.assert_called_once()
|
207 | 208 | assert viewer.display_model.visible_axes == (0, -2, -1)
|
| 209 | + |
| 210 | + |
| 211 | +@no_type_check |
| 212 | +@_patch_views |
| 213 | +def test_roi_controller() -> None: |
| 214 | + ctrl = ArrayViewer() |
| 215 | + |
| 216 | + # Until a user interacts with ctrl.roi, there is no ROI model |
| 217 | + assert ctrl._roi_model is None |
| 218 | + ctrl.roi = RectangularROIModel() |
| 219 | + assert ctrl._roi_model is not None |
| 220 | + ctrl.roi = None |
| 221 | + assert ctrl._roi_model is None |
| 222 | + |
| 223 | + # Clicking the ROI button and then clicking the canvas creates a ROI |
0 commit comments