Skip to content

Commit

Permalink
Test widget methods
Browse files Browse the repository at this point in the history
  • Loading branch information
faymanns committed Oct 16, 2023
1 parent e4017d1 commit 9458afb
Showing 1 changed file with 148 additions and 0 deletions.
148 changes: 148 additions & 0 deletions src/napari_melt_pool_tracker/_tests/test_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,3 +113,151 @@ def test_determine_laser_speed_and_position(make_napari_viewer, capsys):
assert len(viewer.layers[f"{name}_line"].shape_type) == 1
assert viewer.layers[f"{name}_line"].shape_type[0] == "line"
assert np.all(viewer.layers[f"{name}_line"].data[0].shape == (2, 2))

# read captured output and check that it's as we expected
captured = capsys.readouterr()
assert captured.out == ""


def test_reslice_with_moving_window(make_napari_viewer, capsys):
viewer = make_napari_viewer()
test_data = np.zeros((100, 100, 200))
test_data[:, 50:, :] = 255
image_name = "test_image"
line_name = "test_line"
viewer.add_image(test_data, name=image_name)
viewer.add_shapes([[0, 0], [100, 100]], shape_type="line", name=line_name)

# create our widget, passing in the viewer
widget = MeltPoolTrackerQWidget(viewer)

widget.window_groupbox.comboboxes["Stack"].setCurrentText(image_name)
widget.window_groupbox.comboboxes["Line"].setCurrentText(line_name)

# Test auto run option for left margin
new_left_margin = widget.window_groupbox.sliders["Left margin"].value() - 5
widget.window_groupbox.sliders["Left margin"].setValue(new_left_margin)
right_margin = widget.window_groupbox.sliders["Right margin"].value()

expected_shape = (
viewer.layers[image_name].data.shape[1],
new_left_margin + right_margin,
)
assert np.all(
viewer.layers[f"{image_name}_resliced"].data.shape[1:]
== expected_shape
)

# Test auto run option for right margin
left_margin = widget.window_groupbox.sliders["Left margin"].value()
new_right_margin = (
widget.window_groupbox.sliders["Right margin"].value() + 5
)
widget.window_groupbox.sliders["Right margin"].setValue(new_right_margin)

expected_shape = (
viewer.layers[image_name].data.shape[1],
left_margin + new_right_margin,
)
assert np.all(
viewer.layers[f"{image_name}_resliced"].data.shape[1:]
== expected_shape
)

# Check that window positions are present
window_coordinates_layer = viewer.layers[
f"{image_name}_window_coordinates"
]
assert len(window_coordinates_layer.data) == 3 * test_data.shape[0]
for coordinates in window_coordinates_layer.data:
assert np.all(coordinates.shape == (2, 3))

# Test deactivating overwrite
widget.window_groupbox.overwrite_cb.setChecked(False)
widget._reslice_with_moving_window()
assert np.all(
viewer.layers[f"{image_name}_resliced [1]"].data.shape[1:]
== expected_shape
)

# read captured output and check that it's as we expected
captured = capsys.readouterr()
assert captured.out == ""


def test_filter(make_napari_viewer, capsys):
viewer = make_napari_viewer()
image_data = np.ones((10, 10, 10))
image_name = "test_image"
viewer.add_image(image_data, name=image_name)

widget = MeltPoolTrackerQWidget(viewer)

widget.filter_groupbox.comboboxes["Input"].setCurrentText(image_name)

# Test auto run
for slider_name in ["Kernel t", "Kernel y", "Kernel x"]:
current_value = widget.filter_groupbox.sliders[slider_name].value()
widget.filter_groupbox.sliders[slider_name].setValue(current_value + 1)
assert (
viewer.layers[f"{image_name}_filtered"].data.shape
== image_data.shape
)
del viewer.layers[f"{image_name}_filtered"]

# Test deactivating overwrite
widget.filter_groupbox.overwrite_cb.setChecked(False)
widget._filter()
widget._filter()
assert viewer.layers[f"{image_name}_filtered"]
assert viewer.layers[f"{image_name}_filtered [1]"]

# read captured output and check that it's as we expected
captured = capsys.readouterr()
assert captured.out == ""


def test_calculate_radial_gradient(make_napari_viewer, capsys):
viewer = make_napari_viewer()
image_data = np.ones((10, 10, 10))
image_name = "test_image"
viewer.add_image(image_data, name=image_name)

widget = MeltPoolTrackerQWidget(viewer)

widget.radial_groupbox.comboboxes["Input"].setCurrentText(image_name)

widget._calculate_radial_gradient()
assert viewer.layers[f"{image_name}_radial_gradient"]

# read captured output and check that it's as we expected
captured = capsys.readouterr()
assert captured.out == ""


def test_annotate_surface_features(make_napari_viewer, capsys):
viewer = make_napari_viewer()
image_data = np.zeros((10, 10, 10))
image_data[:, :5, :] = 1
image_name = "test_image"
viewer.add_image(image_data, name=image_name)

widget = MeltPoolTrackerQWidget(viewer)

widget.annotate_surface_groupbox.comboboxes["Input"].setCurrentText(
image_name
)
widget.annotate_surface_groupbox.comboboxes["Surface"].setCurrentText(
image_name
)

widget._annotate_surface_features()

assert viewer.layers["MP front edge"]
assert viewer.layers["MP back edge"]
assert viewer.layers["DZ front edge"]
assert viewer.layers["DZ back edge"]

# read captured output and check that it's as we expected
captured = capsys.readouterr()
assert captured.out == ""

0 comments on commit 9458afb

Please sign in to comment.