Files
AareDAQ/tests/unit/daq/test_raster_logic.py
T
appleb_m 35d747c785
Build and Publish / build (push) Successful in 18s
Build and Publish / Build and Deploy Docs (push) Successful in 36s
tests: added raster_grid and raster logic tests
2026-04-24 14:22:32 +02:00

98 lines
2.7 KiB
Python

import pytest
from aare.common.coordinate import Coordinate, SmargonCoordinate
from aare.common.raster_grid import RasterGridRequest
from aare.daq.daq import AareDAQ
def make_request(n_x: int, n_y: int, cell_x: float = 0.01, cell_y: float = 0.02) -> RasterGridRequest:
return RasterGridRequest(
exp_time_s=0.02,
transmission=1.0,
file_prefix="test",
n_x=n_x,
n_y=n_y,
grid_size_mm=Coordinate(x=cell_x, y=cell_y),
smargon_top_left=SmargonCoordinate(),
omega_deg=0.0,
)
def test_grid_image_id_from_centre_offset_single_cell():
request = make_request(1, 1)
image_id = AareDAQ._grid_image_id_from_centre_offset(
x_mm=request.grid_size_mm.x / 2.0,
y_mm=request.grid_size_mm.y / 2.0,
request=request,
)
assert image_id == 0
def test_grid_image_id_from_centre_offset_odd_grid():
request = make_request(5, 3, cell_x=0.01, cell_y=0.02)
x_mm = ((request.n_x - 1) * request.grid_size_mm.x) / 2.0
y_mm = ((request.n_y - 1) * request.grid_size_mm.y) / 2.0
image_id = AareDAQ._grid_image_id_from_centre_offset(
x_mm=x_mm,
y_mm=y_mm,
request=request,
)
assert image_id == 7
def test_grid_image_id_from_centre_offset_even_grid():
request = make_request(4, 4, cell_x=0.01, cell_y=0.01)
x_mm = ((request.n_x - 1) * request.grid_size_mm.x) / 2.0
y_mm = ((request.n_y - 1) * request.grid_size_mm.y) / 2.0
image_id = AareDAQ._grid_image_id_from_centre_offset(
x_mm=x_mm,
y_mm=y_mm,
request=request,
)
assert image_id == 6
def test_grid_image_id_from_centre_offset_vertical_scan():
request = make_request(1, 50, cell_x=0.01, cell_y=0.005)
x_mm = request.grid_size_mm.x / 2.0
y_mm = ((request.n_y - 1) * request.grid_size_mm.y) / 2.0
image_id = AareDAQ._grid_image_id_from_centre_offset(
x_mm=x_mm,
y_mm=y_mm,
request=request,
)
assert image_id == 24
def test_grid_image_id_from_centre_offset_rejects_non_positive_cell_size():
request = make_request(3, 3)
request.grid_size_mm = Coordinate(x=0.0, y=0.01)
with pytest.raises(ValueError, match="grid_size_mm must be positive"):
AareDAQ._grid_image_id_from_centre_offset(
x_mm=0.0,
y_mm=0.0,
request=request,
)
def test_grid_image_id_from_centre_offset_rejects_zero_dimensions():
request = make_request(1, 1)
request.n_x = 0
with pytest.raises(ValueError, match="Raster grid dimensions must be >= 1"):
AareDAQ._grid_image_id_from_centre_offset(
x_mm=0.0,
y_mm=0.0,
request=request,
)