@@ -480,6 +480,35 @@ def test_to_dict_empty(self):
480480 }
481481 assert result == expected
482482
483+ @pytest .mark .parametrize ("zarr_format" , [2 , 3 ])
484+ async def test_to_dict_order (
485+ self , memory_store : zarr .storage .MemoryStore , zarr_format : ZarrFormat
486+ ) -> None :
487+ with zarr .config .set (default_zarr_format = zarr_format ):
488+ g = await group (store = memory_store )
489+
490+ # Create groups in non-lexicographix order
491+ dtype = "float32"
492+ await g .create_array (name = "b" , shape = (1 ,), dtype = dtype )
493+ child = await g .create_group ("c" , attributes = {"key" : "child" })
494+ await g .create_array (name = "a" , shape = (1 ,), dtype = dtype )
495+
496+ await child .create_array ("e" , shape = (1 ,), dtype = dtype )
497+ await child .create_array ("d" , shape = (1 ,), dtype = dtype )
498+
499+ # Consolidate metadata and re-open store
500+ await zarr .api .asynchronous .consolidate_metadata (memory_store )
501+ g2 = await zarr .api .asynchronous .open_group (store = memory_store )
502+
503+ assert list (g2 .metadata .consolidated_metadata .metadata ) == ["a" , "b" , "c" ]
504+ assert list (g2 .metadata .consolidated_metadata .flattened_metadata ) == [
505+ "a" ,
506+ "b" ,
507+ "c" ,
508+ "c/d" ,
509+ "c/e" ,
510+ ]
511+
483512 @pytest .mark .parametrize ("zarr_format" , [2 , 3 ])
484513 async def test_open_consolidated_raises_async (self , zarr_format : ZarrFormat ):
485514 store = zarr .storage .MemoryStore ()
0 commit comments