Files
tono/tests/node_tests/immerse_detail.py
2026-04-03 23:11:52 -07:00

43 lines
1.6 KiB
Python

import numpy as np
import pytest
from tests.node_tests._shared import make_field
def test_output_shape_matches_overview():
from backend.nodes.immerse_detail import ImmerseDetail
node = ImmerseDetail()
overview = make_field(shape=(64, 64))
# Detail must have matching pixel size (smaller physical area)
detail = make_field(shape=(16, 16), xreal=0.25e-6, yreal=0.25e-6)
(combined,) = node.process(overview, detail, blend="replace")
assert combined.data.shape == overview.data.shape
def test_detail_larger_returns_overview():
from backend.nodes.immerse_detail import ImmerseDetail
node = ImmerseDetail()
overview = make_field(shape=(32, 32))
# Detail larger than overview after resampling
detail = make_field(shape=(64, 64))
(combined,) = node.process(overview, detail, blend="replace")
# Should return the overview unchanged
assert np.array_equal(combined.data, overview.data)
def test_replace_mode():
from backend.nodes.immerse_detail import ImmerseDetail
node = ImmerseDetail()
overview_data = np.zeros((64, 64))
detail_data = np.ones((16, 16)) * 5.0
overview = make_field(data=overview_data)
# Match pixel size so detail stays 16x16 (smaller than 64x64)
detail = make_field(data=detail_data, xreal=0.25e-6, yreal=0.25e-6)
(combined,) = node.process(overview, detail, blend="replace")
# After immersion, some pixels should now equal 5.0
assert np.any(combined.data == 5.0), "Detail should modify some pixels in replace mode"
# But not all pixels changed
assert combined.data.shape == (64, 64)