diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index 14375887..e836f829 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -3,10 +3,6 @@ import pytest from napari_matplotlib import HistogramWidget -from napari_matplotlib.tests.helpers import ( - assert_figures_equal, - assert_figures_not_equal, -) @pytest.mark.mpl_image_compare @@ -27,26 +23,3 @@ def test_histogram_3D(make_napari_viewer, brain_data): # Need to return a copy, as original figure is too eagerley garbage # collected by the widget return deepcopy(fig) - - -def test_change_layer(make_napari_viewer, brain_data, astronaut_data): - viewer = make_napari_viewer() - widget = HistogramWidget(viewer) - - viewer.add_image(brain_data[0], **brain_data[1]) - viewer.add_image(astronaut_data[0], **astronaut_data[1]) - - # Select first layer - viewer.layers.selection.clear() - viewer.layers.selection.add(viewer.layers[0]) - fig1 = deepcopy(widget.figure) - - # Re-selecting first layer should produce identical plot - viewer.layers.selection.clear() - viewer.layers.selection.add(viewer.layers[0]) - assert_figures_equal(widget.figure, fig1) - - # Plotting the second layer should produce a different plot - viewer.layers.selection.clear() - viewer.layers.selection.add(viewer.layers[1]) - assert_figures_not_equal(widget.figure, fig1) diff --git a/src/napari_matplotlib/tests/test_layer_changes.py b/src/napari_matplotlib/tests/test_layer_changes.py new file mode 100644 index 00000000..1cdf299f --- /dev/null +++ b/src/napari_matplotlib/tests/test_layer_changes.py @@ -0,0 +1,59 @@ +from copy import deepcopy +from typing import Any, Dict, Tuple, Type + +import numpy as np +import numpy.typing as npt +import pytest +from napari.viewer import Viewer + +from napari_matplotlib import HistogramWidget, SliceWidget +from napari_matplotlib.base import NapariMPLWidget +from napari_matplotlib.tests.helpers import ( + assert_figures_equal, + assert_figures_not_equal, +) + + +@pytest.mark.parametrize("widget_cls", [HistogramWidget, SliceWidget]) +def test_change_one_layer( + make_napari_viewer, brain_data, astronaut_data, widget_cls +): + """ + Test all widgets that take one layer as input to make sure the plot changes + when the napari layer selection changes. + """ + viewer = make_napari_viewer() + assert_one_layer_plot_changes( + viewer, widget_cls, brain_data, astronaut_data + ) + + +def assert_one_layer_plot_changes( + viewer: Viewer, + widget_cls: Type[NapariMPLWidget], + data1: Tuple[npt.NDArray[np.generic], Dict[str, Any]], + data2: Tuple[npt.NDArray[np.generic], Dict[str, Any]], +) -> None: + """ + When the selected layer is changed, make sure the plot generated + by `widget_cls` also changes. + """ + widget = widget_cls(viewer) + + viewer.add_image(data1[0], **data1[1]) + viewer.add_image(data2[0], **data2[1]) + + # Select first layer + viewer.layers.selection.clear() + viewer.layers.selection.add(viewer.layers[0]) + fig1 = deepcopy(widget.figure) + + # Re-selecting first layer should produce identical plot + viewer.layers.selection.clear() + viewer.layers.selection.add(viewer.layers[0]) + assert_figures_equal(widget.figure, fig1) + + # Plotting the second layer should produce a different plot + viewer.layers.selection.clear() + viewer.layers.selection.add(viewer.layers[1]) + assert_figures_not_equal(widget.figure, fig1)
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: