@@ -20,3 +20,42 @@ def test_asdict() -> None:
20
20
)
21
21
result = attrs .asdict ()
22
22
assert result == {"a" : 1 , "b" : 2 }
23
+
24
+
25
+ def test_update_attributes_preserves_existing () -> None :
26
+ """
27
+ Test that `update_attributes` only updates the specified attributes
28
+ and preserves existing ones.
29
+ """
30
+ store = zarr .storage .MemoryStore ()
31
+ z = zarr .create (10 , store = store , overwrite = True )
32
+ z .attrs ["a" ] = []
33
+ z .attrs ["b" ] = 3
34
+ assert dict (z .attrs ) == {"a" : [], "b" : 3 }
35
+
36
+ z .update_attributes ({"a" : [3 , 4 ], "c" : 4 })
37
+ assert dict (z .attrs ) == {"a" : [3 , 4 ], "b" : 3 , "c" : 4 }
38
+
39
+
40
+ def test_update_empty_attributes () -> None :
41
+ """
42
+ Ensure updating when initial attributes are empty works.
43
+ """
44
+ store = zarr .storage .MemoryStore ()
45
+ z = zarr .create (10 , store = store , overwrite = True )
46
+ assert dict (z .attrs ) == {}
47
+ z .update_attributes ({"a" : [3 , 4 ], "c" : 4 })
48
+ assert dict (z .attrs ) == {"a" : [3 , 4 ], "c" : 4 }
49
+
50
+
51
+ def test_update_no_changes () -> None :
52
+ """
53
+ Ensure updating when no new or modified attributes does not alter existing ones.
54
+ """
55
+ store = zarr .storage .MemoryStore ()
56
+ z = zarr .create (10 , store = store , overwrite = True )
57
+ z .attrs ["a" ] = []
58
+ z .attrs ["b" ] = 3
59
+
60
+ z .update_attributes ({})
61
+ assert dict (z .attrs ) == {"a" : [], "b" : 3 }
0 commit comments