@@ -117,6 +117,7 @@ def test_dataset_accessor_has_expected_methods():
117117 'morph_erode' , 'morph_dilate' , 'morph_opening' , 'morph_closing' ,
118118 'morph_gradient' , 'morph_white_tophat' , 'morph_black_tophat' ,
119119 'proximity' , 'allocation' , 'direction' , 'cost_distance' ,
120+ 'multi_stop_search' ,
120121 'ndvi' , 'evi' , 'arvi' , 'savi' , 'nbr' , 'sipi' ,
121122 'rasterize' ,
122123 'validate' ,
@@ -299,6 +300,17 @@ def test_da_multi_stop_search_kwargs(elevation):
299300 xr .testing .assert_identical (result , expected )
300301
301302
303+ def test_ds_multi_stop_search (elevation ):
304+ from xrspatial .pathfinding import multi_stop_search
305+ ds = xr .Dataset ({'a' : elevation , 'b' : elevation + 100 })
306+ waypoints = [(0 , 0 ), (5 , 5 ), (9 , 9 )]
307+ expected = multi_stop_search (ds , waypoints )
308+ result = ds .xrs .multi_stop_search (waypoints )
309+ xr .testing .assert_identical (result , expected )
310+ # supports_dataset routes each variable through its own surface
311+ assert set (result .data_vars ) == {'a' , 'b' }
312+
313+
302314# ---------------------------------------------------------------------------
303315# 5. Dataset single-input — accessor matches direct call
304316# ---------------------------------------------------------------------------
0 commit comments