94 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			94 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)
 |