U
    ƒ±Ëhj%  ã                   @   sp   d dl Zd dlmZ d dlm  mZ d dlm	Z	 d dl
mZ d ZG dd„ dƒZG dd„ dƒZG d	d
„ d
ƒZdS )é    N)Úlabel)Útesting)Úassert_array_equalc                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestConnectedComponentsc                 C   sÖ   t  ddddddgddddddgddddddgddddddgg¡| _t  ddddddgddddddgddddddgdddd	d
dgg¡| _| jd | _d| jd< | j ¡ | _d| j| jdk< | j| jdk  d8  < d S )Nr   é   é   é   é	   é   é   é   é   é   é
   )éÿÿÿÿr   )ÚnpÚarrayÚxÚlabelsÚlabels_nobgÚcopyÚlabels_bg_9©Úself© r   úD/tmp/pip-unpacked-wheel-gtraehzf/skimage/measure/tests/test_ccomp.pyÚsetup_method   s"    üü
z$TestConnectedComponents.setup_methodc                 C   sT   t t| jƒ| jƒ | jd dks$t‚t t| jdd| jƒ t t| jdd| jƒ d S )N)r   r   r   éc   ©Ú
backgroundr	   )r   r   r   r   ÚAssertionErrorr   r   r   r   r   r   Ú
test_basic'   s    z"TestConnectedComponents.test_basicc                 C   s\   t j dd¡d  t¡}t|ƒ}| ¡ }t|ƒD ]&}|||k }t  ||d k¡s0t	‚q0d S ©Né   é   r
   r   ©
r   ÚrandomZrandZastypeÚintr   ÚmaxÚrangeÚallr    ©r   r   r   ÚnÚiÚvaluesr   r   r   Útest_random2   s    z#TestConnectedComponents.test_randomc                 C   s4   t  dddgdddgdddgg¡}tt|ƒ|ƒ d S )Nr   r   ©r   r   r   r   ©r   r   r   r   r   Ú	test_diag;   s
    þz!TestConnectedComponents.test_diagc                 C   sZ   t jddgddggtd}tt|ddddgddggƒ tt|ddddgddggƒ d S )Nr   r   )Zdtype©Úconnectivityr   )r   r   r'   r   r   r1   r   r   r   Útest_4_vs_8A   s    
ÿÿÿÿÿÿz#TestConnectedComponents.test_4_vs_8c                 C   sv   t  dddgdddgdddgg¡}tt|ƒdddgdddgdddggƒ tt|dddddgdddgdddggƒ d S )Nr   r   r
   r   r   r0   r1   r   r   r   Útest_backgroundL   s    þþþÿz'TestConnectedComponents.test_backgroundc                 C   sT   t  dddgdddgdddgg¡}t|dd}t|dddgdddgdddggƒ d S )Nr   r   r
   r   r   r   )r   r   r   r   )r   r   Úresr   r   r   Útest_background_two_regionsZ   s    þþÿz3TestConnectedComponents.test_background_two_regionsc                 C   sR   t  dddgdddgdddgg¡}tt|ddddddgdddgdddggƒ d S )Nr   r   ©r4   r   r0   r1   r   r   r   Ú!test_background_one_region_centere   s    þþÿz9TestConnectedComponents.test_background_one_region_centerc                 C   sT   t  dddgdddgdddgg¡}tt|ddd dƒ tt|ddd	d d
ƒ d S ©Nr   r   r   r
   T)Ú
return_numr   r   )r   r<   r   r0   r1   r   r   r   Útest_return_nump   s    þz'TestConnectedComponents.test_return_numN)Ú__name__Ú
__module__Ú__qualname__r   r!   r/   r2   r5   r6   r8   r:   r=   r   r   r   r   r      s   	r   c                   @   sl   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestConnectedComponents3dc              
   C   s   t  dt¡| _t  dddddgdddddgdddddgdddddgg¡| jd< t  dddddgdddddgdddddgdddddgg¡| jd< t  dddddgdddddgdddddgdddddgg¡| jd< t  dt¡| _t  ddddd	gddd	dd	gddd	d	d	gddd
ddgg¡| jd< t  ddddd	gddd	ddgdddddgdddddgg¡| jd< t  dddddgddd	ddgdddddgdddddgg¡| jd< d S )N)r   r   r
   r   r   r   r   r	   r
   r   r   r   r   )r   Úzerosr'   r   r   r   r   r   r   r   r   {   s@    ýýýýýýz&TestConnectedComponents3d.setup_methodc                 C   s0   t | jƒ}t|| jƒ | jd dks,tdƒ‚d S )N)r   r   r   r   zData was modified!)r   r   r   r   r    )r   r   r   r   r   r!      s
    
ÿz$TestConnectedComponents3d.test_basicc                 C   s\   t j dd¡d  t¡}t|ƒ}| ¡ }t|ƒD ]&}|||k }t  ||d k¡s0t	‚q0d S r"   r%   r+   r   r   r   r/   ¤   s    z%TestConnectedComponents3d.test_randomc                 C   s6   t  dt¡}d|d< d|d< d|d< tt|ƒ|ƒ d S )N©r   r   r   r   )r   r   r   ©r   r   r   )r   r   r   )r   rB   r'   r   r   r1   r   r   r   r2   ­   s
    z#TestConnectedComponents3d.test_diagc                 C   sT   t  dt¡}d|d< d|d< | ¡ }d|d< tt|dd|ƒ tt|dd|ƒ d S ©N)r   r   r   r   )r   r   r   )r   r   r   r   r3   r   ©r   rB   r'   r   r   r   )r   r   Zlabel4r   r   r   r5   ´   s    z%TestConnectedComponents3d.test_4_vs_8c                 C   sT   t  dt¡}d|d< d|d< | ¡ }d|d< tt|dd|ƒ tt|dd|ƒ d S rE   rF   )r   r   Úlabel1r   r   r   Útest_connectivity_1_vs_2½   s    z2TestConnectedComponents3d.test_connectivity_1_vs_2c                 C   s$  t  dt¡}t  dddgdddgdddgg¡|d< t  dddgdddgdddgg¡|d< | ¡ }t  dddgdddgdddgg¡|d< t  dddgdddgdddgg¡|d< | ¡ }t  dttgdttgtttgg¡|d< t  tttgtddgtttgg¡|d< tt|ƒ|ƒ tt|dd|ƒ d S )	N©r   r   r   r   r   r
   r   r   r   r   )r   rB   r'   r   r   ÚBGr   r   )r   r   ZlnbÚlbr   r   r   r6   Æ   s:    þ
þ
þ
þ
þ
þ
z)TestConnectedComponents3d.test_backgroundc                 C   sÆ   t  dt¡}t  dddgdddgdddgg¡|d< t  dddgdddgdddgg¡|d< | ¡ }t  ttdgttdgdddgg¡|d< t  ddtgdttgtttgg¡|d< t|dd}t||ƒ d S )NrI   r   r   r
   r   r   r   )r   rB   r'   r   r   rJ   r   r   )r   r   rK   r7   r   r   r   r8   á   s(    þ
þ
þ
þ
z5TestConnectedComponents3d.test_background_two_regionsc                 C   sB   t  dt¡}d|d< t  |¡t }d|d< tt|ddd|ƒ d S )NrC   r   rD   r   r9   )r   rB   r'   Z	ones_likerJ   r   r   )r   r   rK   r   r   r   r:   ô   s
    z;TestConnectedComponents3d.test_background_one_region_centerc                 C   sT   t  dddgdddgdddgg¡}tt|ddd dƒ tt|ddd	d d
ƒ d S r;   r0   r1   r   r   r   r=   ý   s    þz)TestConnectedComponents3d.test_return_numc                 C   sv   t  d¡}t|ƒ}t  d¡}|fd|f|dfd|df|ddfdd|ff}|D ]$}| |¡}t|ƒ}t|| ¡ ƒ qLd S )N)r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   )r   r   ÚlenÚreshaper   r   Úflatten)r   r   ÚxlenÚyZreshapesrM   Zx2Zlabelledr   r   r   Útest_1D  s    

   þ
z!TestConnectedComponents3d.test_1Dc              	   C   s,   t  d¡}t t¡ t|ƒ W 5 Q R X d S )N)r   r   r   r   )r   Zonesr   ZraisesÚNotImplementedErrorr   r1   r   r   r   Útest_nd  s    
z!TestConnectedComponents3d.test_ndN)r>   r?   r@   r   r!   r/   r2   r5   rH   r6   r8   r:   r=   rQ   rS   r   r   r   r   rA   z   s   "				rA   c                   @   s   e Zd Zdd„ ZdS )ÚTestSupportc           
      C   s|   d}|D ]n}t  |¡}t|dkƒ}t j |¡}t |¡\}}|j}t|ƒD ]}|| dksJt‚qJt 	||¡}	t
||	ƒ qd S )N))r   r   r   )r   r   r
   )r   r   r   )r   r   )r   r   )r   r   Úsumr&   ÚccompZreshape_arrayÚshaper)   r    Zundo_reshape_arrayr   )
r   Z	shapes_inrW   ZnumonesÚinpZfixedZswapsZshape2r-   Úbackr   r   r   Útest_reshape  s    
zTestSupport.test_reshapeN)r>   r?   r@   rZ   r   r   r   r   rT     s   rT   )Znumpyr   Zskimage.measurer   Zskimage.measure._ccompZmeasureZ_ccomprV   Zskimage._sharedr   Zskimage._shared.testingr   rJ   r   rA   rT   r   r   r   r   Ú<module>   s   n 