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   R/var/www/html/venv/lib/python3.8/site-packages/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numonesZinpZfixedZswapsZshape2r-   backr   r   r   test_reshape  s    
zTestSupport.test_reshapeN)r>   r?   r@   rY   r   r   r   r   rT     s   rT   )numpyr   Zskimage.measurer   Zskimage.measure._ccompmeasureZ_ccomprV   Zskimage._sharedr   Zskimage._shared.testingr   rJ   r   rA   rT   r   r   r   r   <module>   s   n 