Skip to content

Commit b2e91fa

Browse files
committedJun 2, 2023
Check that single layer widget plots change w/ layer change
1 parent e481734 commit b2e91fa

File tree

2 files changed

+59
-27
lines changed

2 files changed

+59
-27
lines changed
 

‎src/napari_matplotlib/tests/test_histogram.py

Lines changed: 0 additions & 27 deletions
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
@@ -27,26 +23,3 @@ def test_histogram_3D(make_napari_viewer, brain_data):
2723
# Need to return a copy, as original figure is too eagerley garbage
2824
# collected by the widget
2925
return deepcopy(fig)
30-
31-
32-
def test_change_layer(make_napari_viewer, brain_data, astronaut_data):
33-
viewer = make_napari_viewer()
34-
widget = HistogramWidget(viewer)
35-
36-
viewer.add_image(brain_data[0], **brain_data[1])
37-
viewer.add_image(astronaut_data[0], **astronaut_data[1])
38-
39-
# Select first layer
40-
viewer.layers.selection.clear()
41-
viewer.layers.selection.add(viewer.layers[0])
42-
fig1 = deepcopy(widget.figure)
43-
44-
# Re-selecting first layer should produce identical plot
45-
viewer.layers.selection.clear()
46-
viewer.layers.selection.add(viewer.layers[0])
47-
assert_figures_equal(widget.figure, fig1)
48-
49-
# Plotting the second layer should produce a different plot
50-
viewer.layers.selection.clear()
51-
viewer.layers.selection.add(viewer.layers[1])
52-
assert_figures_not_equal(widget.figure, fig1)
Lines changed: 59 additions & 0 deletions
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)
Please sign in to comment.