Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions xrspatial/tests/test_contour.py
Original file line number Diff line number Diff line change
Expand Up @@ -1498,3 +1498,49 @@ def test_nan_dask_cupy_equals_numpy(self):
for lvl in np_segs:
assert np_segs[lvl] == dc_segs[lvl], (
f"NaN-input dask+cupy result diverges from numpy at level {lvl}")


# ---------------------------------------------------------------------------
# Coverage gaps: all-equal auto-levels and empty explicit levels (#3352)
# ---------------------------------------------------------------------------

class TestFlatAutoLevelsAndEmptyLevels:

def test_contours_flat_auto_levels(self):
"""An all-equal raster with auto-levels (levels=None) returns empty.

When vmin == vmax, np.linspace produces identical levels and no
contours are generated. Regression guard for the auto-level branch.
"""
raster = create_test_raster(
np.ones((10, 10), dtype=np.float64), backend='numpy'
)
result = contours(raster, levels=None, n_levels=10)
assert isinstance(result, list)
assert len(result) == 0

def test_contours_empty_explicit_levels_numpy(self):
"""Passing an empty list as levels with numpy return_type returns [].

No crossing can exist with zero levels, so the function returns an
empty list without raising.
"""
raster = create_test_raster(
np.random.rand(10, 10), backend='numpy'
)
result = contours(raster, levels=[], return_type='numpy')
assert isinstance(result, list)
assert len(result) == 0

def test_contours_empty_explicit_levels_geopandas(self):
"""Passing an empty list as levels with geopandas returns empty gdf."""
pytest.importorskip('geopandas')
import geopandas as gpd
raster = create_test_raster(
np.random.rand(10, 10), backend='numpy'
)
result_gdf = contours(raster, levels=[], return_type='geopandas')
assert isinstance(result_gdf, gpd.GeoDataFrame)
assert len(result_gdf) == 0
assert 'level' in result_gdf.columns
assert 'geometry' in result_gdf.columns
Loading