Skip to content

Commit ea4d2c2

Browse files
committed
Add unit tests for result deletion from images and signals
1 parent 3a13f13 commit ea4d2c2

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
2+
3+
"""
4+
Result deletion unit test
5+
--------------------------
6+
7+
Test the deletion of analysis results from objects.
8+
"""
9+
10+
# pylint: disable=invalid-name # Allows short reference names like x, y, ...
11+
# guitest: show
12+
13+
from __future__ import annotations
14+
15+
from sigima.objects import Gauss2DParam, create_image_from_param
16+
from sigima.tests.data import create_paracetamol_signal
17+
18+
from datalab.adapters_metadata import GeometryAdapter, TableAdapter
19+
from datalab.config import Conf
20+
from datalab.env import execenv
21+
from datalab.objectmodel import get_uuid
22+
from datalab.tests import datalab_test_app_context
23+
24+
25+
def test_delete_results_image():
26+
"""Test deletion of analysis results from images"""
27+
with datalab_test_app_context(console=False) as win:
28+
execenv.print("Image result deletion test:")
29+
panel = win.imagepanel
30+
31+
# Create a test image
32+
param = Gauss2DParam.create(height=200, width=200, sigma=20)
33+
img = create_image_from_param(param)
34+
panel.add_object(img)
35+
36+
# Run centroid analysis to create results
37+
execenv.print(" Running centroid analysis...")
38+
with Conf.proc.show_result_dialog.temp(False):
39+
panel.processor.run_feature("centroid")
40+
41+
# Verify that results exist
42+
img_refreshed = panel.objmodel[get_uuid(img)]
43+
adapter_before = GeometryAdapter.from_obj(img_refreshed, "centroid")
44+
assert adapter_before is not None, (
45+
"Centroid result should exist before deletion"
46+
)
47+
execenv.print(" ✓ Centroid result created")
48+
49+
# Delete all results
50+
execenv.print(" Deleting all results...")
51+
panel.objview.select_objects([get_uuid(img)])
52+
panel.delete_results()
53+
54+
# Verify that results were deleted
55+
img_after = panel.objmodel[get_uuid(img)]
56+
adapter_after = GeometryAdapter.from_obj(img_after, "centroid")
57+
assert adapter_after is None, "Centroid result should be deleted"
58+
execenv.print(" ✓ Centroid result deleted")
59+
60+
61+
def test_delete_results_signal():
62+
"""Test deletion of analysis results from signals"""
63+
with datalab_test_app_context(console=False) as win:
64+
execenv.print("Signal result deletion test:")
65+
panel = win.signalpanel
66+
67+
# Create a test signal
68+
sig = create_paracetamol_signal()
69+
panel.add_object(sig)
70+
71+
# Run stats analysis to create table results
72+
execenv.print(" Running stats analysis...")
73+
with Conf.proc.show_result_dialog.temp(False):
74+
panel.processor.run_feature("stats")
75+
76+
# Verify that results exist
77+
sig_refreshed = panel.objmodel[get_uuid(sig)]
78+
tables_before = list(TableAdapter.iterate_from_obj(sig_refreshed))
79+
assert len(tables_before) > 0, "Stats result should exist before deletion"
80+
execenv.print(" ✓ Stats result created")
81+
82+
# Delete all results
83+
execenv.print(" Deleting all results...")
84+
panel.objview.select_objects([get_uuid(sig)])
85+
panel.delete_results()
86+
87+
# Verify that results were deleted
88+
sig_after = panel.objmodel[get_uuid(sig)]
89+
tables_after = list(TableAdapter.iterate_from_obj(sig_after))
90+
assert len(tables_after) == 0, "Stats result should be deleted"
91+
execenv.print(" ✓ Stats result deleted")
92+
93+
94+
if __name__ == "__main__":
95+
test_delete_results_image()
96+
test_delete_results_signal()

0 commit comments

Comments
 (0)