add draw mask node
This commit is contained in:
@@ -4,6 +4,7 @@ Tests for all argonode backend nodes (excluding FFT2D which has its own test fil
|
||||
Run from project root:
|
||||
.venv/bin/python -m tests.test_nodes
|
||||
"""
|
||||
import json
|
||||
import sys
|
||||
import os
|
||||
import tempfile
|
||||
@@ -708,6 +709,53 @@ def test_mask_combine():
|
||||
print(" PASS\n")
|
||||
|
||||
|
||||
def test_draw_mask():
|
||||
print("=== Test: DrawMask ===")
|
||||
from backend.nodes.mask import DrawMask
|
||||
node = DrawMask()
|
||||
|
||||
field = make_field(data=np.zeros((32, 32), dtype=np.float64))
|
||||
overlays = []
|
||||
DrawMask._broadcast_overlay_fn = lambda nid, data: overlays.append(data)
|
||||
DrawMask._current_node_id = "test"
|
||||
|
||||
mask_paths = [
|
||||
{
|
||||
"size": 5,
|
||||
"points": [
|
||||
{"x": 0.2, "y": 0.5},
|
||||
{"x": 0.8, "y": 0.5},
|
||||
],
|
||||
}
|
||||
]
|
||||
|
||||
mask, = node.process(field, pen_size=2, invert=False, mask_paths=json.dumps(mask_paths))
|
||||
assert mask.dtype == np.uint8
|
||||
assert mask.shape == (32, 32)
|
||||
assert mask[16, 16] == 255
|
||||
assert mask[14, 16] == 255
|
||||
assert mask[0, 0] == 0
|
||||
|
||||
assert len(overlays) == 1
|
||||
assert overlays[0]["kind"] == "mask_paint"
|
||||
assert overlays[0]["section_title"] == "Mask"
|
||||
assert overlays[0]["image"].startswith("data:image/png;base64,")
|
||||
assert overlays[0]["image_width"] == field.xres
|
||||
assert overlays[0]["image_height"] == field.yres
|
||||
assert overlays[0]["invert"] is False
|
||||
|
||||
inverted, = node.process(field, pen_size=2, invert=True, mask_paths=json.dumps(mask_paths))
|
||||
assert inverted[16, 16] == 0
|
||||
assert inverted[0, 0] == 255
|
||||
assert overlays[-1]["invert"] is True
|
||||
|
||||
cleared, = node.process(field, pen_size=12, invert=False, mask_paths="[]")
|
||||
assert np.count_nonzero(cleared) == 0
|
||||
|
||||
DrawMask._broadcast_overlay_fn = None
|
||||
print(" PASS\n")
|
||||
|
||||
|
||||
def test_particle_analysis():
|
||||
print("=== Test: ParticleAnalysis ===")
|
||||
from backend.nodes.grains import ParticleAnalysis
|
||||
@@ -1563,6 +1611,7 @@ if __name__ == "__main__":
|
||||
test_mask_morphology()
|
||||
test_mask_invert()
|
||||
test_mask_combine()
|
||||
test_draw_mask()
|
||||
|
||||
# Grains
|
||||
test_particle_analysis()
|
||||
|
||||
Reference in New Issue
Block a user