import os import numpy as np from numpy.testing import assert_raises, assert_equal, assert_allclose from skimage import data_dir from skimage.io.collection import MultiImage import six class TestMultiImage(): def setUp(self): # This multipage TIF file was created with imagemagick: # convert im1.tif im2.tif -adjoin multipage.tif paths = [os.path.join(data_dir, 'multipage.tif'), os.path.join(data_dir, 'no_time_for_that.gif')] self.imgs = [MultiImage(paths[0]), MultiImage(paths[0], conserve_memory=False), MultiImage(paths[1]), MultiImage(paths[1], conserve_memory=False)] def test_len(self): assert len(self.imgs[0]) == len(self.imgs[1]) == 2 assert len(self.imgs[2]) == len(self.imgs[3]) == 24 def test_getitem(self): for img in self.imgs: num = len(img) for i in range(-num, num): assert type(img[i]) is np.ndarray assert_allclose(img[0], img[-num]) # assert_raises expects a callable, hence this thin wrapper function. def return_img(n): return img[n] assert_raises(IndexError, return_img, num) assert_raises(IndexError, return_img, -num - 1) def test_files_property(self): for img in self.imgs: assert isinstance(img.filename, six.string_types) def set_filename(f): img.filename = f assert_raises(AttributeError, set_filename, 'newfile') def test_conserve_memory_property(self): for img in self.imgs: assert isinstance(img.conserve_memory, bool) def set_mem(val): img.conserve_memory = val assert_raises(AttributeError, set_mem, True) def test_concatenate(self): for img in self.imgs: array = img.concatenate() assert_equal(array.shape, (len(img),) + img[0].shape) if __name__ == "__main__": from numpy.testing import run_module_suite run_module_suite()