U
    ?h                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZmZ d dlmZ d dlmZ d dlmZmZmZ d dlZzdZW n ek
r   dZY nX d	d
 Zdd Zdd ZG dd dZdS )    N)data_dir)ImageCollection
MultiImagealphanumeric_key)reset_plugins)testing)assert_equalassert_allclosefetchTFc                  C   s    d} dddg}t t| | d S )NZz23az   a)r   r   )Ztest_stringZtest_str_result r   R/var/www/html/venv/lib/python3.8/site-packages/skimage/io/tests/test_collection.pytest_string_split   s    
r   c                  C   s>   dddddddg} dddddddg}t | td}t|| d S )	Nz	f9.10.pngzf9.9.pngz
f10.10.pngz	f10.9.pngze9.pngze10.pngzem.png)key)sortedr   r   )	filenamesZexpected_filenamesZsorted_filenamesr   r   r   test_string_sort   s        r   c                  C   s@   t dt dt dg} dd | D }t|}t|dks<tdS )zTest function for ImageCollection. The new behavior (implemented
    in 0.16) allows the `pattern` argument to accept a list of strings
    as the input.

    Notes
    -----
        If correct, `images` will receive three images.
    zdata/coffee.pngzdata/chessboard_GRAY.pngzdata/rocket.jpgc                 S   s   g | ]}t jt|qS r   )ospathjoinr   ).0Zpicr   r   r   
<listcomp>6   s     z.test_imagecollection_input.<locals>.<listcomp>   Nr
   r   lenAssertionError)picspatternimagesr   r   r   test_imagecollection_input%   s    r!   c                   @   s   e Zd ZedededgZedd Zeddd Zdd Zdd	 Zd
d Z	dd Z
dd Zejje dddd Zejje dddd Zdd Zdd Zdd Zdd ZdS )TestImageCollectionzdata/brick.pngzdata/color.pngzdata/moon.pngN   c                 C   s.   t   t| j| _t| j| _t| j| _d S N)r   r   r   r    pattern_same_shapeimages_matchedr   frames_matchedselfr   r   r   setup_methodD   s    z TestImageCollection.setup_methodc                 C   s   t | jdkstd S )Nr#   )r   r    r   r(   r   r   r   test_lenM   s    zTestImageCollection.test_lenc              	      s   t  j}t| |D ]}t j| tjstqt jd  j|    fdd}t	t
 || W 5 Q R X t	t
 || d  W 5 Q R X d S )Nr   c                    s
    j |  S r$   )r    )nr(   r   r   
return_imgW   s    z4TestImageCollection.test_getitem.<locals>.return_img   )r   r    range
isinstancenpZndarrayr   r	   r   raises
IndexError)r)   numir-   r   r(   r   test_getitemP   s    


z TestImageCollection.test_getitemc                 C   s   t | jd d  tkstt| jd d  dks4tt| jd d dksNtt| jdd  dkshtt| jd | jd d d  t| jd | jdd  d  t| jd | jd d d d  t| jd | jd d d d  d S )Nr#   r.   r   )typer    r   r   r   r	   r(   r   r   r   test_slicing^   s     z TestImageCollection.test_slicingc              	      s@   t  jjtst fdd}tt |d W 5 Q R X d S )Nc                    s   |  j _d S r$   )r    files)fr(   r   r   	set_filesk   s    z:TestImageCollection.test_files_property.<locals>.set_filesZnewfiles)r0   r    r:   listr   r   r2   AttributeError)r)   r<   r   r(   r   test_files_propertyh   s    z'TestImageCollection.test_files_propertyzneeds pooch to download data)reasonc                    sJ   t d  fdd}ttd|d}t|dks4t|d jdksFtd S )Ndata/no_time_for_that_tiny.gifc                    s   t j | dS )Nindex)iio3ZimreadrB   filenamer   r   readert   s    zBTestImageCollection.test_custom_load_func_sequence.<locals>.reader   	load_funcr   )      r   )r
   r   r/   r   r   shape)r)   rG   icr   rE   r   test_custom_load_func_sequencep   s
    z2TestImageCollection.test_custom_load_func_sequencec                 C   sF   t d}dd }t||dd}t|dks.tt|d dksBtd S )	NrA   c                 S   s   t | }tt|d d |S r$   )rD   Zimiterr=   	itertoolsislice)r;   stepZvidr   r   r   load_fn   s    
zBTestImageCollection.test_custom_load_func_w_kwarg.<locals>.load_fnr   )rJ   rR   r.   r      r   )r)   Zload_patternrS   rN   r   r   r   test_custom_load_func_w_kwarg}   s
    z1TestImageCollection.test_custom_load_func_w_kwargc                 C   s6   dd }t tj| j|d}t|d | jd  d S )Nc                 S   s   | S r$   r   )xr   r   r   rS      s    z:TestImageCollection.test_custom_load_func.<locals>.load_fnrI   r   )r   r   pathsepr   r   r   )r)   rS   rN   r   r   r   test_custom_load_func   s    z)TestImageCollection.test_custom_load_funcc                 C   s2   | j  }t| j f| jd j }t|j| d S )Nr   )r&   concatenater   r    rM   r   )r)   arrayZexpected_shaper   r   r   test_concatenate   s    
z$TestImageCollection.test_concatenatec              	   C   s$   t t | j  W 5 Q R X d S r$   )r   r2   
ValueErrorr    rY   r(   r   r   r   (test_concatenate_mismatched_image_shapes   s    z<TestImageCollection.test_concatenate_mismatched_image_shapesc                 C   s0   t | jd | jd  t | jd | jd  d S )Nr   r.   )r   r&   r'   r(   r   r   r   test_multiimage_imagecollection   s    z3TestImageCollection.test_multiimage_imagecollection)__name__
__module____qualname__r
   r   r   r%   r*   r+   r6   r9   r?   pytestmarkZskipif	has_poochrO   rU   rX   r[   r]   r^   r   r   r   r   r"   ;   s&   	


r"   )r   rP   numpyr1   Z
imageio.v3Zv3rD   Zskimager   Zskimage.io.collectionr   r   r   Z
skimage.ior   Zskimage._sharedr   Zskimage._shared.testingr   r	   r
   rb   rd   ModuleNotFoundErrorr   r   r!   r"   r   r   r   r   <module>   s"   
	