Add tests for priority-flood numba/Python parity and _strip_lidar_ext
This commit is contained in:
@ -326,3 +326,44 @@ def test_ray_trace_horizons_reraises_non_oom(monkeypatch):
|
||||
assert False, "ValueError attendue"
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
||||
class TestPriorityFlood:
|
||||
def test_numba_matches_python(self):
|
||||
"""Le résultat numba et python sont identiques sur un DEM avec un puits."""
|
||||
from lidar_pipeline.visualizations import _priority_flood_numba, _priority_flood_python
|
||||
|
||||
dem = np.zeros((20, 20), dtype=np.float64)
|
||||
dem[10, 10] = -5.0
|
||||
dem[9:12, 9:12] = -3.0
|
||||
nodata = np.zeros((20, 20), dtype=bool)
|
||||
|
||||
result_numba = _priority_flood_numba(dem.copy(), nodata)
|
||||
result_python = _priority_flood_python(dem.copy(), nodata)
|
||||
|
||||
if result_numba is not None:
|
||||
assert np.allclose(result_numba, result_python)
|
||||
|
||||
def test_pit_is_filled(self):
|
||||
"""Un puits isolé est ramené au niveau de son bord."""
|
||||
from lidar_pipeline.visualizations import _priority_flood
|
||||
|
||||
dem = np.full((10, 10), 5.0, dtype=np.float64)
|
||||
dem[5, 5] = 1.0
|
||||
nodata = np.zeros((10, 10), dtype=bool)
|
||||
|
||||
result = _priority_flood(dem, nodata)
|
||||
assert result[5, 5] == 5.0
|
||||
|
||||
def test_nodata_cells_untouched(self):
|
||||
"""Les cellules nodata ne sont jamais modifiées."""
|
||||
from lidar_pipeline.visualizations import _priority_flood
|
||||
|
||||
dem = np.full((10, 10), 5.0, dtype=np.float64)
|
||||
dem[5, 5] = 1.0
|
||||
nodata = np.zeros((10, 10), dtype=bool)
|
||||
nodata[2, 2] = True
|
||||
dem[2, 2] = 999.0
|
||||
|
||||
result = _priority_flood(dem, nodata)
|
||||
assert result[2, 2] == 999.0
|
||||
|
||||
Reference in New Issue
Block a user