A test coverage audit on xrspatial.resample turned up four gaps. These aren't bug reports — they're paths we expect to work but never actually exercise.
Gaps
-
CuPy parity for median and mode. TestCuPyParity::test_aggregate_parity only runs average, min, max. The cupy backend hands median and mode off to CPU inside _run_cupy, and the cupy-in / cupy-out round-trip isn't checked anywhere.
-
dask+cupy parity. TestDaskParity covers dask+numpy. Nothing covers dask+cupy, so one corner of the four-backend matrix is dark.
-
Integer-dtype input. Every existing test uses float32. The API doesn't say "floats only," so int32 / uint8 rasters should resample to float output without clipping or overflow.
-
target_resolution tuple. test_target_resolution only hits the scalar form. The tuple form target_resolution=(y, x) works in the source but isn't tested.
Change
Tests only — xrspatial/tests/test_resample.py. No source changes.
A test coverage audit on
xrspatial.resampleturned up four gaps. These aren't bug reports — they're paths we expect to work but never actually exercise.Gaps
CuPy parity for
medianandmode.TestCuPyParity::test_aggregate_parityonly runsaverage,min,max. The cupy backend handsmedianandmodeoff to CPU inside_run_cupy, and the cupy-in / cupy-out round-trip isn't checked anywhere.dask+cupy parity.
TestDaskParitycovers dask+numpy. Nothing covers dask+cupy, so one corner of the four-backend matrix is dark.Integer-dtype input. Every existing test uses float32. The API doesn't say "floats only," so int32 / uint8 rasters should resample to float output without clipping or overflow.
target_resolutiontuple.test_target_resolutiononly hits the scalar form. The tuple formtarget_resolution=(y, x)works in the source but isn't tested.Change
Tests only —
xrspatial/tests/test_resample.py. No source changes.