remove stale tests

This commit is contained in:
2026-03-25 22:50:44 -07:00
parent 6de239caa1
commit cc3af8e929
3 changed files with 31 additions and 175 deletions

View File

@@ -830,14 +830,14 @@ def test_particle_analysis():
def test_load_file():
print("=== Test: Image ===")
from backend.nodes.io import Image
from PIL import Image
node = Image()
from backend.nodes.io import Image as ImageNode
from PIL import Image as PILImage
node = ImageNode()
with tempfile.TemporaryDirectory() as tmpdir:
# Test loading a grayscale PNG → single DataField output
arr = np.random.default_rng(1).integers(0, 256, (48, 64), dtype=np.uint8)
img = Image.fromarray(arr, mode="L")
img = PILImage.fromarray(arr, mode="L")
path = os.path.join(tmpdir, "test_gray.png")
img.save(path)
@@ -849,7 +849,7 @@ def test_load_file():
# Test loading an RGB PNG (should average to grayscale)
arr_rgb = np.random.default_rng(2).integers(0, 256, (32, 32, 3), dtype=np.uint8)
img_rgb = Image.fromarray(arr_rgb, mode="RGB")
img_rgb = PILImage.fromarray(arr_rgb, mode="RGB")
path_rgb = os.path.join(tmpdir, "test_rgb.png")
img_rgb.save(path_rgb)
@@ -1333,17 +1333,17 @@ def test_load_file_unsupported():
def test_load_file_warning():
print("=== Test: Image warning for uncalibrated data ===")
from backend.nodes.io import Image
from PIL import Image
from backend.nodes.io import Image as ImageNode
from PIL import Image as PILImage
node = Image()
node = ImageNode()
warnings = []
Image._broadcast_warning_fn = lambda nid, msg: warnings.append(msg)
Image._current_node_id = "test"
ImageNode._broadcast_warning_fn = lambda nid, msg: warnings.append(msg)
ImageNode._current_node_id = "test"
with tempfile.TemporaryDirectory() as tmpdir:
arr = np.random.default_rng(10).integers(0, 256, (16, 16), dtype=np.uint8)
img = Image.fromarray(arr)
img = PILImage.fromarray(arr)
path = os.path.join(tmpdir, "test.png")
img.save(path)
@@ -1352,7 +1352,7 @@ def test_load_file_warning():
assert len(warnings) == 1
assert "Uncalibrated" in warnings[0]
Image._broadcast_warning_fn = None
ImageNode._broadcast_warning_fn = None
print(" PASS\n")
@@ -1724,159 +1724,6 @@ def test_fft2d():
print(" PASS\n")
# =========================================================================
# Analysis — LineMath
# =========================================================================
def test_line_math():
print("=== Test: LineMath ===")
from backend.nodes.analysis import LineMath
node = LineMath()
line = np.array([1.0, 2.0, 3.0, 4.0, 5.0])
# Basic stats
table, = node.process(line, operation="min")
assert table[0]["value"] == 1.0
table, = node.process(line, operation="max")
assert table[0]["value"] == 5.0
table, = node.process(line, operation="mean")
assert table[0]["value"] == 3.0
table, = node.process(line, operation="median")
assert table[0]["value"] == 3.0
table, = node.process(line, operation="sum")
assert table[0]["value"] == 15.0
table, = node.process(line, operation="range")
assert table[0]["value"] == 4.0
table, = node.process(line, operation="length")
assert table[0]["value"] == 5.0
# RMS of [1,2,3,4,5]
table, = node.process(line, operation="rms")
expected_rms = np.sqrt(np.mean(line ** 2))
assert abs(table[0]["value"] - expected_rms) < 1e-10
# Roughness parameters
table, = node.process(line, operation="Ra")
d = line - line.mean()
expected_ra = float(np.mean(np.abs(d)))
assert abs(table[0]["value"] - expected_ra) < 1e-10
table, = node.process(line, operation="Rq")
expected_rq = float(np.sqrt(np.mean(d ** 2)))
assert abs(table[0]["value"] - expected_rq) < 1e-10
# Rp = max of (z - mean)
table, = node.process(line, operation="Rp")
assert abs(table[0]["value"] - d.max()) < 1e-10
# Rv = -(min of (z - mean))
table, = node.process(line, operation="Rv")
assert abs(table[0]["value"] - (-d.min())) < 1e-10
# Rt = Rp + Rv = range of (z - mean)
table, = node.process(line, operation="Rt")
assert abs(table[0]["value"] - (d.max() - d.min())) < 1e-10
# Constant line: roughness parameters should all be zero
const_line = np.ones(10) * 7.0
table, = node.process(const_line, operation="Ra")
assert table[0]["value"] == 0.0
table, = node.process(const_line, operation="Rq")
assert table[0]["value"] == 0.0
table, = node.process(const_line, operation="Rsk")
assert table[0]["value"] == 0.0
table, = node.process(const_line, operation="Rku")
assert table[0]["value"] == 0.0
# Slope-based: Dq and Da
table, = node.process(line, operation="Dq")
dz = np.diff(line)
expected_dq = float(np.sqrt(np.mean(dz * dz)))
assert abs(table[0]["value"] - expected_dq) < 1e-10
table, = node.process(line, operation="Da")
expected_da = float(np.mean(np.abs(dz)))
assert abs(table[0]["value"] - expected_da) < 1e-10
print(" PASS\n")
# =========================================================================
# Analysis — TableMath
# =========================================================================
def test_table_math():
print("=== Test: TableMath ===")
from backend.nodes.analysis import TableMath
node = TableMath()
captured = []
TableMath._broadcast_value_fn = lambda node_id, value: captured.append((node_id, value))
TableMath._current_node_id = "test"
table = RecordTable([
{"label": "a", "value": 1.0, "other": 10},
{"label": "b", "value": 5.0, "other": 20},
{"label": "c", "value": "3.0", "other": 30},
{"label": "d", "value": "bad", "other": 40},
])
result, = node.process(table, column="value", operation="max")
assert result == 5.0
assert captured[-1] == ("test", 5.0)
result, = node.process(table, column="value", operation="min")
assert result == 1.0
result, = node.process(table, column="value", operation="avg")
assert np.isclose(result, 3.0)
result, = node.process(table, column="value", operation="median")
assert np.isclose(result, 3.0)
result, = node.process(table, column="other", operation="sum")
assert result == 100.0
result, = node.process(table, column="other", operation="count")
assert result == 4.0
# Blank column name should fall back to the common "value" column.
result, = node.process(table, column="", operation="range")
assert result == 4.0
try:
node.process(table, column="missing", operation="max")
raise AssertionError("Expected missing numeric column to raise ValueError")
except ValueError:
pass
try:
node.process([{"label": "only text"}], column="label", operation="max")
raise AssertionError("Expected non-numeric column to raise ValueError")
except ValueError:
pass
try:
node.process(
MeasureTable([{"quantity": "A position", "value": 1.0, "unit": "m"}]),
column="value",
operation="max",
)
raise AssertionError("Expected measurement table input to raise ValueError")
except ValueError:
pass
TableMath._broadcast_value_fn = None
print(" PASS\n")
# =========================================================================
# Analysis — Stats
# =========================================================================
@@ -1894,6 +1741,8 @@ def test_stats():
result, = node.process(line, operation="mean", column="value")
assert np.isclose(result, 2.5)
assert captured[-1] == ("test", {"value": result})
roughness, = node.process(line, operation="Rq", column="value")
assert np.isclose(roughness, np.sqrt(np.mean((line - line.mean()) ** 2)))
table = RecordTable([
{"name": "a", "value": 3.0, "unit": "m", "other": 10.0},
@@ -1902,6 +1751,10 @@ def test_stats():
result, = node.process(table, operation="max", column="value")
assert result == 7.0
assert captured[-1] == ("test", {"value": 7.0, "unit": "m"})
count, = node.process(table, operation="count", column="other")
assert count == 2.0
auto_column_range, = node.process(table, operation="range", column="")
assert auto_column_range == 4.0
field = make_field(data=np.array([[1.0, 5.0], [2.0, 4.0]], dtype=np.float64))
result, = node.process(field, operation="range", column="value")
@@ -1919,6 +1772,12 @@ def test_stats():
except ValueError:
pass
try:
node.process([{"label": "only text"}], operation="max", column="label")
raise AssertionError("Expected non-numeric record-table input to raise ValueError")
except ValueError:
pass
try:
node.process(
MeasureTable([{"quantity": "min", "value": 1.0, "unit": "m"}]),
@@ -2008,8 +1867,6 @@ if __name__ == "__main__":
test_cross_section()
test_line_cursors()
test_fft2d()
test_line_math()
test_table_math()
test_stats()
# Mask