Skip to content

Commit ea2f7bc

Browse files
authored
Merge pull request #151 from dstansby/one-layer-changes
Check that single layer widget plots change w/ layer change
2 parents 7f675f2 + b2e91fa commit ea2f7bc

File tree

2 files changed

+59
-27
lines changed

2 files changed

+59
-27
lines changed

Diff for: src/napari_matplotlib/tests/test_histogram.py

-27
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@
33
import pytest
44

55
from napari_matplotlib import HistogramWidget
6-
from napari_matplotlib.tests.helpers import (
7-
assert_figures_equal,
8-
assert_figures_not_equal,
9-
)
106

117

128
@pytest.mark.mpl_image_compare
@@ -30,26 +26,3 @@ def test_histogram_3D(make_napari_viewer, brain_data):
3026
# Need to return a copy, as original figure is too eagerley garbage
3127
# collected by the widget
3228
return deepcopy(fig)
33-
34-
35-
def test_change_layer(make_napari_viewer, brain_data, astronaut_data):
36-
viewer = make_napari_viewer()
37-
widget = HistogramWidget(viewer)
38-
39-
viewer.add_image(brain_data[0], **brain_data[1])
40-
viewer.add_image(astronaut_data[0], **astronaut_data[1])
41-
42-
# Select first layer
43-
viewer.layers.selection.clear()
44-
viewer.layers.selection.add(viewer.layers[0])
45-
fig1 = deepcopy(widget.figure)
46-
47-
# Re-selecting first layer should produce identical plot
48-
viewer.layers.selection.clear()
49-
viewer.layers.selection.add(viewer.layers[0])
50-
assert_figures_equal(widget.figure, fig1)
51-
52-
# Plotting the second layer should produce a different plot
53-
viewer.layers.selection.clear()
54-
viewer.layers.selection.add(viewer.layers[1])
55-
assert_figures_not_equal(widget.figure, fig1)

Diff for: src/napari_matplotlib/tests/test_layer_changes.py

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
from copy import deepcopy
2+
from typing import Any, Dict, Tuple, Type
3+
4+
import numpy as np
5+
import numpy.typing as npt
6+
import pytest
7+
from napari.viewer import Viewer
8+
9+
from napari_matplotlib import HistogramWidget, SliceWidget
10+
from napari_matplotlib.base import NapariMPLWidget
11+
from napari_matplotlib.tests.helpers import (
12+
assert_figures_equal,
13+
assert_figures_not_equal,
14+
)
15+
16+
17+
@pytest.mark.parametrize("widget_cls", [HistogramWidget, SliceWidget])
18+
def test_change_one_layer(
19+
make_napari_viewer, brain_data, astronaut_data, widget_cls
20+
):
21+
"""
22+
Test all widgets that take one layer as input to make sure the plot changes
23+
when the napari layer selection changes.
24+
"""
25+
viewer = make_napari_viewer()
26+
assert_one_layer_plot_changes(
27+
viewer, widget_cls, brain_data, astronaut_data
28+
)
29+
30+
31+
def assert_one_layer_plot_changes(
32+
viewer: Viewer,
33+
widget_cls: Type[NapariMPLWidget],
34+
data1: Tuple[npt.NDArray[np.generic], Dict[str, Any]],
35+
data2: Tuple[npt.NDArray[np.generic], Dict[str, Any]],
36+
) -> None:
37+
"""
38+
When the selected layer is changed, make sure the plot generated
39+
by `widget_cls` also changes.
40+
"""
41+
widget = widget_cls(viewer)
42+
43+
viewer.add_image(data1[0], **data1[1])
44+
viewer.add_image(data2[0], **data2[1])
45+
46+
# Select first layer
47+
viewer.layers.selection.clear()
48+
viewer.layers.selection.add(viewer.layers[0])
49+
fig1 = deepcopy(widget.figure)
50+
51+
# Re-selecting first layer should produce identical plot
52+
viewer.layers.selection.clear()
53+
viewer.layers.selection.add(viewer.layers[0])
54+
assert_figures_equal(widget.figure, fig1)
55+
56+
# Plotting the second layer should produce a different plot
57+
viewer.layers.selection.clear()
58+
viewer.layers.selection.add(viewer.layers[1])
59+
assert_figures_not_equal(widget.figure, fig1)

0 commit comments

Comments
 (0)