Skip to content

Commit a3d6d27

Browse files
committed
TEST: Refactor test loops as parameterizations
1 parent c248b53 commit a3d6d27

File tree

1 file changed

+28
-19
lines changed

1 file changed

+28
-19
lines changed

nibabel/tests/test_arrayproxy.py

+28-19
Original file line numberDiff line numberDiff line change
@@ -154,27 +154,36 @@ def test_nifti1_init():
154154
assert_array_equal(np.asarray(ap), arr * 2.0 + 10)
155155

156156

157-
def test_proxy_slicing():
158-
shapes = (15, 16, 17)
159-
for n_dim in range(1, len(shapes) + 1):
160-
shape = shapes[:n_dim]
161-
arr = np.arange(np.prod(shape)).reshape(shape)
162-
for offset in (0, 20):
163-
hdr = Nifti1Header()
164-
hdr.set_data_offset(offset)
165-
hdr.set_data_dtype(arr.dtype)
166-
hdr.set_data_shape(shape)
167-
for order, klass in ('F', ArrayProxy), ('C', CArrayProxy):
168-
fobj = BytesIO()
169-
fobj.write(b'\0' * offset)
170-
fobj.write(arr.tobytes(order=order))
171-
prox = klass(fobj, hdr)
172-
for sliceobj in slicer_samples(shape):
173-
assert_array_equal(arr[sliceobj], prox[sliceobj])
174-
# Check slicing works with scaling
157+
@pytest.mark.parametrize("n_dim", (1, 2, 3))
158+
@pytest.mark.parametrize("offset", (0, 20))
159+
def test_proxy_slicing(n_dim, offset):
160+
shape = (15, 16, 17)[:n_dim]
161+
arr = np.arange(np.prod(shape)).reshape(shape)
162+
hdr = Nifti1Header()
163+
hdr.set_data_offset(offset)
164+
hdr.set_data_dtype(arr.dtype)
165+
hdr.set_data_shape(shape)
166+
for order, klass in ('F', ArrayProxy), ('C', CArrayProxy):
167+
fobj = BytesIO()
168+
fobj.write(b'\0' * offset)
169+
fobj.write(arr.tobytes(order=order))
170+
prox = klass(fobj, hdr)
171+
assert prox.order == order
172+
for sliceobj in slicer_samples(shape):
173+
assert_array_equal(arr[sliceobj], prox[sliceobj])
174+
175+
176+
def test_proxy_slicing_with_scaling():
177+
shape = (15, 16, 17)
178+
offset = 20
179+
arr = np.arange(np.prod(shape)).reshape(shape)
180+
hdr = Nifti1Header()
181+
hdr.set_data_offset(offset)
182+
hdr.set_data_dtype(arr.dtype)
183+
hdr.set_data_shape(shape)
175184
hdr.set_slope_inter(2.0, 1.0)
176185
fobj = BytesIO()
177-
fobj.write(b'\0' * offset)
186+
fobj.write(bytes(offset))
178187
fobj.write(arr.tobytes(order='F'))
179188
prox = ArrayProxy(fobj, hdr)
180189
sliceobj = (None, slice(None), 1, -1)

0 commit comments

Comments
 (0)