From 1c1845f75c4e2cfacfa4fa8b485adf6b09b650a1 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Wed, 6 Dec 2023 08:19:19 -0500 Subject: [PATCH] TEST: Check IndexedGzipFile ArrayProxys are copied properly --- nibabel/tests/test_arrayproxy.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/nibabel/tests/test_arrayproxy.py b/nibabel/tests/test_arrayproxy.py index acf609985..a207e4ed6 100644 --- a/nibabel/tests/test_arrayproxy.py +++ b/nibabel/tests/test_arrayproxy.py @@ -23,7 +23,7 @@ from .. import __version__ from ..arrayproxy import ArrayProxy, get_obj_dtype, is_proxy, reshape_dataobj from ..deprecator import ExpiredDeprecationError -from ..nifti1 import Nifti1Header +from ..nifti1 import Nifti1Header, Nifti1Image from ..openers import ImageOpener from ..testing import memmap_after_ufunc from ..tmpdirs import InTemporaryDirectory @@ -586,3 +586,20 @@ def test_copy(): copied = proxy.copy() assert islock(copied._lock) assert proxy._lock is copied._lock + + +def test_copy_with_indexed_gzip_handle(tmp_path): + indexed_gzip = pytest.importorskip('indexed_gzip') + + spec = ((50, 50, 50, 50), np.float32, 352, 1, 0) + data = np.arange(np.prod(spec[0]), dtype=spec[1]).reshape(spec[0]) + fname = str(tmp_path / 'test.nii.gz') + Nifti1Image(data, np.eye(4)).to_filename(fname) + + with indexed_gzip.IndexedGzipFile(fname) as fobj: + proxy = ArrayProxy(fobj, spec) + copied = proxy.copy() + + assert proxy.file_like is copied.file_like + assert np.array_equal(proxy[0, 0, 0], copied[0, 0, 0]) + assert np.array_equal(proxy[-1, -1, -1], copied[-1, -1, -1])