10000 Add more setitem property tests (#2825) · tomwhite/zarr-python@23abb5b · GitHub
[go: up one dir, main page]

Skip to content

Commit 23abb5b

Browse files
authored
Add more setitem property tests (zarr-developers#2825)
* Add more setitem property tests * comment out vindex setitem * xfail with shards
1 parent f8bc315 commit 23abb5b

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

tests/test_properties.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import numpy as np
21
import pytest
32
from numpy.testing import assert_array_equal
43

@@ -8,7 +7,7 @@
87

98
import hypothesis.extra.numpy as npst
109
import hypothesis.strategies as st
11-
from hypothesis import given
10+
from hypothesis import assume, given
1211

1312
from zarr.abc.store import Store
1413
from zarr.core.metadata import ArrayV2Metadata, ArrayV3Metadata
@@ -57,7 +56,7 @@ def test_basic_indexing(data: st.DataObject) -> None:
5756
actual = zarray[indexer]
5857
assert_array_equal(nparray[indexer], actual)
5958

60-
new_data = np.ones_like(actual)
59+
new_data = data.draw(npst.arrays(shape=st.just(actual.shape), dtype=nparray.dtype))
6160
zarray[indexer] = new_data
6261
nparray[indexer] = new_data
6362
assert_array_equal(nparray, zarray[:])
@@ -73,6 +72,12 @@ def test_oindex(data: st.DataObject) -> None:
7372
actual = zarray.oindex[zindexer]
7473
assert_array_equal(nparray[npindexer], actual)
7574

75+
assume(zarray.shards is None) # GH2834
76+
new_data = data.draw(npst.arrays(shape=st.just(actual.shape), dtype=nparray.dtype))
77+
nparray[npindexer] = new_data
78+
zarray.oindex[zindexer] = new_data
79+
assert_array_equal(nparray, zarray[:])
80+
7681

7782
@given(data=st.data())
7883
def test_vindex(data: st.DataObject) -> None:
@@ -88,6 +93,14 @@ def test_vindex(data: st.DataObject) -> None:
8893
actual = zarray.vindex[indexer]
8994
assert_array_equal(nparray[indexer], actual)
9095

96+
# FIXME!
97+
# when the indexer is such that a value gets overwritten multiple times,
98+
# I think the output depends on chunking.
99+
# new_data = data.draw(npst.arrays(shape=st.just(actual.shape), dtype=nparray.dtype))
100+
# nparray[indexer] = new_data
101+
# zarray.vindex[indexer] = new_data
102+
# assert_array_equal(nparray, zarray[:])
103+
91104

92105
@given(store=stores, meta=array_metadata()) # type: ignore[misc]
93106
async def test_roundtrip_array_metadata(

0 commit comments

Comments
 (0)
0