Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 04383e0

Browse filesBrowse files
authored
Merge pull request #162 from dstansby/scatter-layer-change
Test layer changes for ScatterWidget
2 parents 964ce24 + 46ee64f commit 04383e0
Copy full SHA for 04383e0

File tree

1 file changed

+36
-28
lines changed
Filter options

1 file changed

+36
-28
lines changed

‎src/napari_matplotlib/tests/test_layer_changes.py

Copy file name to clipboardExpand all lines: src/napari_matplotlib/tests/test_layer_changes.py
+36-28Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from napari_matplotlib import (
1010
FeaturesScatterWidget,
1111
HistogramWidget,
12+
ScatterWidget,
1213
SliceWidget,
1314
)
1415
from napari_matplotlib.base import NapariMPLWidget
@@ -18,34 +19,32 @@
1819
)
1920

2021

21-
@pytest.mark.parametrize("widget_cls", [HistogramWidget, SliceWidget])
22+
@pytest.mark.parametrize(
23+
"widget_cls, n_layers",
24+
[(HistogramWidget, 1), (SliceWidget, 1), (ScatterWidget, 2)],
25+
)
2226
def test_change_one_layer(
23-
make_napari_viewer, brain_data, astronaut_data, widget_cls
27+
make_napari_viewer,
28+
brain_data,
29+
astronaut_data,
30+
widget_cls,
31+
n_layers,
2432
):
2533
"""
2634
Test all widgets that take one layer as input to make sure the plot changes
2735
when the napari layer selection changes.
2836
"""
2937
viewer = make_napari_viewer()
30-
assert_one_layer_plot_changes(
31-
viewer, widget_cls, brain_data, astronaut_data
32-
)
33-
3438

35-
def assert_one_layer_plot_changes(
36-
viewer: Viewer,
37-
widget_cls: Type[NapariMPLWidget],
38-
data1: Tuple[npt.NDArray[np.generic], Dict[str, Any]],
39-
data2: Tuple[npt.NDArray[np.generic], Dict[str, Any]],
40-
) -> None:
41-
"""
42-
When the selected layer is changed, make sure the plot generated
43-
by `widget_cls` also changes.
44-
"""
4539
widget = widget_cls(viewer)
46-
viewer.add_image(data1[0], **data1[1])
47-
viewer.add_image(data2[0], **data2[1])
48-
assert_plot_changes(viewer, widget)
40+
# Add n copies of two different datasets
41+
for _ in range(n_layers):
42+
viewer.add_image(brain_data[0], **brain_data[1])
43+
for _ in range(n_layers):
44+
viewer.add_image(astronaut_data[0], **astronaut_data[1])
45+
46+
assert len(viewer.layers) == 2 * n_layers
47+
assert_plot_changes(viewer, widget, n_layers=n_layers)
4948

5049

5150
@pytest.mark.parametrize("widget_cls", [FeaturesScatterWidget])
@@ -76,26 +75,35 @@ def assert_features_plot_changes(
7675
name: data + 1 for name, data in data[1]["features"].items()
7776
}
7877
viewer.add_points(data[0], **data[1])
79-
assert_plot_changes(viewer, widget)
78+
assert_plot_changes(viewer, widget, n_layers=1)
8079

8180

82-
def assert_plot_changes(viewer: Viewer, widget: NapariMPLWidget) -> None:
81+
def assert_plot_changes(
82+
viewer: Viewer, widget: NapariMPLWidget, *, n_layers: int
83+
) -> None:
8384
"""
8485
Assert that a widget plot changes when the layer selection
85-
is changed. The passed viewer must already have two layers
86+
is changed. The passed viewer must already have (2 * n_layers) layers
8687
loaded.
8788
"""
88-
# Select first layer
89+
# Select first layer(s)
8990
viewer.layers.selection.clear()
90-
viewer.layers.selection.add(viewer.layers[0])
91+
92+
for i in range(n_layers):
93+
viewer.layers.selection.add(viewer.layers[i])
94+
assert len(viewer.layers.selection) == n_layers
9195
fig1 = deepcopy(widget.figure)
9296

93-
# Re-selecting first layer should produce identical plot
97+
# Re-selecting first layer(s) should produce identical plot
9498
viewer.layers.selection.clear()
95-
viewer.layers.selection.add(viewer.layers[0])
99+
for i in range(n_layers):
100+
viewer.layers.selection.add(viewer.layers[i])
101+
assert len(viewer.layers.selection) == n_layers
96102
assert_figures_equal(widget.figure, fig1)
97103

98-
# Plotting the second layer should produce a different plot
104+
# Plotting the second layer(s) should produce a different plot
99105
viewer.layers.selection.clear()
100-
viewer.layers.selection.add(viewer.layers[1])
106+
for i in range(n_layers):
107+
viewer.layers.selection.add(viewer.layers[n_layers + i])
108+
assert len(viewer.layers.selection) == n_layers
101109
assert_figures_not_equal(widget.figure, fig1)

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.