@@ -1473,16 +1473,40 @@ def test_format_compatibility():
1473
1473
@skip_test_env_var ("ZARR_TEST_ABS" )
1474
1474
class TestABSStore (StoreTests , unittest .TestCase ):
1475
1475
1476
- def create_store (self ):
1476
+ def create_store (self , prefix = None ):
1477
1477
asb = pytest .importorskip ("azure.storage.blob" )
1478
1478
blob_client = asb .BlockBlobService (is_emulated = True )
1479
1479
blob_client .delete_container ('test' )
1480
1480
blob_client .create_container ('test' )
1481
- store = ABSStore (container = 'test' , account_name = 'foo' , account_key = 'bar ' ,
1482
- blob_service_kwargs = {'is_emulated' : True })
1481
+ store = ABSStore (container = 'test' , prefix = prefix , account_name = 'foo ' ,
1482
+ account_key = 'bar' , blob_service_kwargs = {'is_emulated' : True })
1483
1483
store .rmdir ()
1484
1484
return store
1485
1485
1486
+ def test_iterators_with_prefix (self ):
1487
+ store = self .create_store (prefix = 'test_prefix' )
1488
+
1489
+ # test iterator methods on empty store
1490
+ assert 0 == len (store )
1491
+ assert set () == set (store )
1492
+ assert set () == set (store .keys ())
1493
+ assert set () == set (store .values ())
1494
+ assert set () == set (store .items ())
1495
+
1496
+ # setup some values
1497
+ store ['a' ] = b'aaa'
1498
+ store ['b' ] = b'bbb'
1499
+ store ['c/d' ] = b'ddd'
1500
+ store ['c/e/f' ] = b'fff'
1501
+
1502
+ # test iterators on store with data
1503
+ assert 4 == len (store )
1504
+ assert {'a' , 'b' , 'c/d' , 'c/e/f' } == set (store )
1505
+ assert {'a' , 'b' , 'c/d' , 'c/e/f' } == set (store .keys ())
1506
+ assert {b'aaa' , b'bbb' , b'ddd' , b'fff' } == set (store .values ())
1507
+ assert ({('a' , b'aaa' ), ('b' , b'bbb' ), ('c/d' , b'ddd' ), ('c/e/f' , b'fff' )} ==
1508
+ set (store .items ()))
1509
+
1486
1510
1487
1511
class TestConsolidatedMetadataStore (unittest .TestCase ):
1488
1512
0 commit comments