95 lines
2.6 KiB
Python
95 lines
2.6 KiB
Python
|
import os
|
||
|
|
||
|
import numpy as np
|
||
|
from skimage.io import use_plugin, reset_plugins
|
||
|
from skimage.io.collection import MultiImage, ImageCollection
|
||
|
|
||
|
from skimage._shared import testing
|
||
|
from skimage._shared.testing import assert_equal, assert_allclose
|
||
|
|
||
|
import pytest
|
||
|
from pytest import fixture
|
||
|
|
||
|
@fixture
|
||
|
def imgs():
|
||
|
use_plugin('pil')
|
||
|
|
||
|
paths = [testing.fetch('data/multipage_rgb.tif'),
|
||
|
testing.fetch('data/no_time_for_that_tiny.gif')]
|
||
|
imgs = [MultiImage(paths[0]),
|
||
|
MultiImage(paths[0], conserve_memory=False),
|
||
|
MultiImage(paths[1]),
|
||
|
MultiImage(paths[1], conserve_memory=False),
|
||
|
ImageCollection(paths[0]),
|
||
|
ImageCollection(paths[1], conserve_memory=False),
|
||
|
ImageCollection(os.pathsep.join(paths))]
|
||
|
yield imgs
|
||
|
|
||
|
reset_plugins()
|
||
|
|
||
|
def test_shapes(imgs):
|
||
|
img = imgs[-1]
|
||
|
imgs = img[:]
|
||
|
assert imgs[0].shape == imgs[1].shape
|
||
|
assert imgs[0].shape == (10, 10, 3)
|
||
|
|
||
|
def test_len(imgs):
|
||
|
assert len(imgs[0]) == len(imgs[1]) == 2
|
||
|
assert len(imgs[2]) == len(imgs[3]) == 24
|
||
|
assert len(imgs[4]) == 2
|
||
|
assert len(imgs[5]) == 24
|
||
|
assert len(imgs[6]) == 26, len(imgs[6])
|
||
|
|
||
|
def test_slicing(imgs):
|
||
|
img = imgs[-1]
|
||
|
assert type(img[:]) is ImageCollection
|
||
|
assert len(img[:]) == 26, len(img[:])
|
||
|
assert len(img[:1]) == 1
|
||
|
assert len(img[1:]) == 25
|
||
|
assert_allclose(img[0], img[:1][0])
|
||
|
assert_allclose(img[1], img[1:][0])
|
||
|
assert_allclose(img[-1], img[::-1][0])
|
||
|
assert_allclose(img[0], img[::-1][-1])
|
||
|
|
||
|
def test_getitem(imgs):
|
||
|
for img in imgs:
|
||
|
num = len(img)
|
||
|
|
||
|
for i in range(-num, num):
|
||
|
assert type(img[i]) is np.ndarray
|
||
|
assert_allclose(img[0], img[-num])
|
||
|
|
||
|
with testing.raises(AssertionError):
|
||
|
assert_allclose(img[0], img[1])
|
||
|
|
||
|
with testing.raises(IndexError):
|
||
|
img[num]
|
||
|
with testing.raises(IndexError):
|
||
|
img[-num - 1]
|
||
|
|
||
|
def test_files_property(imgs):
|
||
|
for img in imgs:
|
||
|
if isinstance(img, ImageCollection):
|
||
|
continue
|
||
|
|
||
|
assert isinstance(img.filename, str)
|
||
|
|
||
|
with testing.raises(AttributeError):
|
||
|
img.filename = "newfile"
|
||
|
|
||
|
def test_conserve_memory_property(imgs):
|
||
|
for img in imgs:
|
||
|
assert isinstance(img.conserve_memory, bool)
|
||
|
|
||
|
with testing.raises(AttributeError):
|
||
|
img.conserve_memory = True
|
||
|
|
||
|
def test_concatenate(imgs):
|
||
|
for img in imgs:
|
||
|
if img[0].shape != img[-1].shape:
|
||
|
with testing.raises(ValueError):
|
||
|
img.concatenate()
|
||
|
continue
|
||
|
array = img.concatenate()
|
||
|
assert_equal(array.shape, (len(img),) + img[0].shape)
|