import tempfile from itertools import combinations_with_replacement from numbers import Number from pathlib import Path import numpy as np import pytest from tiffwrite import tiffwrite from ndbioimage import Imread @pytest.fixture def array(): return np.random.randint(0, 255, (64, 64, 2, 3, 4), "uint8") @pytest.fixture() def image(array): with tempfile.TemporaryDirectory() as folder: file = Path(folder) / "test.tif" tiffwrite(file, array, "yxczt") with Imread(file, axes="yxczt") as im: yield im @pytest.mark.parametrize( "s", combinations_with_replacement( (0, -1, 1, slice(None), slice(0, 1), slice(-1, 0), slice(1, 1)), 5 ), ) def test_slicing(s, image, array): s_im, s_a = image[s], array[s] if isinstance(s_a, Number): assert isinstance(s_im, Number) assert s_im == s_a else: assert isinstance(s_im, Imread) assert s_im.shape == s_a.shape assert np.all(s_im == s_a)