import numpy as np from leonida.coords import mosaic_origin_px from leonida.tiles import assemble def fake_tile(row: int, col: int) -> np.ndarray: """Kodiert die globale Pixelposition, damit ein falscher Versatz auffällt.""" ys, xs = np.mgrid[0:256, 0:256] gy = (row * 256 + ys) % 251 gx = (col * 256 + xs) % 251 return np.dstack([gy, gx, np.full((256, 256), 7)]).astype(np.uint8) def test_assemble_crops_to_slice(): mosaic = assemble(fake_tile) assert mosaic.shape == (3000, 3000, 3) def test_assemble_uses_the_exact_crop_offset(): # Einfarbige Kacheln würden jeden Versatz von 0 bis 72 px durchgehen lassen. ox, oy = mosaic_origin_px() assert (ox, oy) == (24, 60) mosaic = assemble(fake_tile) r0, c0 = 54, 60 for py, px in [(0, 0), (2999, 2999), (1234, 567)]: gy, gx = r0 * 256 + oy + py, c0 * 256 + ox + px assert tuple(mosaic[py, px]) == (gy % 251, gx % 251, 7)