o
    e                     @   sL  d dl Zd dlmZmZ d dlmZ d dlmZ d dl	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e	jdejejejeejejejejejejf
e	jdddd Zdd Zdd Z e	jdde	jddd d! Z!e	jdd"e	jd#de	jd$dd%d& Z"d'd( Z#d)d* Z$d+d, Z%d-d. Z&dS )/    N)join_segmentationsrelabel_sequential)testingassert_array_equalc                  C   s   t g dg dg dg} t g dg dg dg}t| |}t g dg dg dg}t|| t| |d	d
\}}}t|| |  t|| | t g dg dg}tt t| | W d    d S 1 smw   Y  d S )N)r   r      r   )r      r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r      r   )r      r	   r   )   r
   r
   r	   T)Zreturn_mapping)r   r   r   r   )nparrayr   r   r   raises
ValueError)s1s2jZj_refm1m2Zs3 r   TD:\Projects\ConvertPro\env\Lib\site-packages\skimage/segmentation/tests/test_join.pytest_join_segmentations	   s*   




"r   c                 C   s    t ||  | t || |  d S Nr   )arar_relabfwinvr   r   r   _check_maps&   s   r   c                  C   s   t g d} t| \}}}t| ||| t g d}t|| t dt}d|d< d|d< d|d< d	|d
< d|d< t|| t g d}t|| d S )Nr   r   r
   r
      c   *   )r   r   r   r   r	   r
   r   d   r   r   r
   r	   r   r   r!   r    )r   r   r
   r   r!   r    r   r   r   r   r   zerosintr   r   r   r   ar_relab_refZfw_refZinv_refr   r   r   test_relabel_sequential_offset1+   s   

r(   c                  C      t g d} t| dd\}}}t| ||| t g d}t|| t dt}d|d< d|d< d|d	< d	|d
< d|d< t|| t g d}t|| d S )Nr   r
   offset)r
   r
      r,      	   r   r"   r   r,   r-   r   r!   r.   r    
r   r   r   r   r   r   r
   r   r!   r    r#   r&   r   r   r   test_relabel_sequential_offset5<      

r0   c                  C   r)   )Nr   r   r
   r
   r   r    r!   r   r
   r*   r
   r
   r,   r,   r-   r.   r   r   r"   r   r,   r-   r   r!   r.   r    r/   r#   r&   r   r   r   %test_relabel_sequential_offset5_with0M   r1   r4   c                  C   s   t jg dt jd} t| dd\}}}t| t||| t g d}t|| t dt}d|d< d|d< d	|d
< d
|d< d|d< t|| t g d}t|| d S )Nr2   dtyper
   r*   r3   r"   r   r,   r-   r   r!   r.   r    r/   )	r   r   uint8r   r   astyper%   r   r$   r&   r   r   r   test_relabel_sequential_dtype^   s   

r9   c                  C   sx   t t jj} t jg dt jd}t|| d\}}}t jd| | d | d | d gt jd}t|| |j|jks:J d S )N)r   r   r    r!   r!   r5   r*   r   r   r   )	r   iinfoZint32maxr   r   Zuint32r   r6   )imaxlabelsoutputr   r   	referencer   r   r   'test_relabel_sequential_signed_overflowo   s   
r@   c                  C   sT   t t jj} t jdd| ddgt jd}t|| d\}}}t || d ks(J d S )Nr   r   r!   r5   r*   r   )r   r:   Zint64r;   r   r   )r<   r=   r>   r   r   r   r   r   test_very_large_labelsy   s   rA   r6   data_already_sequential)FTc                    sL   | rt jg d d}n	t jg d d}t fddt|D s$J d S )Nr   r	   r   r   r
   r   r5   r2   c                 3   s    | ]}|j  kV  qd S r   r5   .0ar5   r   r   	<genexpr>   s    z>test_relabel_sequential_int_dtype_stability.<locals>.<genexpr>)r   r   allr   )rB   r6   r   r   r5   r   +test_relabel_sequential_int_dtype_stability   s   "rI   c                  C   s   t jg dt jd} d}t| |d\}}}t| ||| tdd ||fD s)J |j| jks1J t | dk| t	| d d}t
|| d S )	NrC   r5      r*   c                 s   s    | ]	}|j tjkV  qd S r   )r6   r   Zuint16rD   r   r   r   rG      s    z=test_relabel_sequential_int_dtype_overflow.<locals>.<genexpr>r   r   )r   r   r7   r   r   rH   r6   wherer8   r%   r   )r   r+   r   r   r   r'   r   r   r   *test_relabel_sequential_int_dtype_overflow   s    rL   c                  C   sF   t g d} tt t|  W d    d S 1 sw   Y  d S )N)r   r   r
   r   r    r!   r   r   r   pytestr   r   r   )r   r   r   r   'test_relabel_sequential_negative_values   s   
"rP   r+   )r   c                 C   s^   | r
t g d}nt g d}tt t||d W d    d S 1 s(w   Y  d S )NrC   r2   r*   rN   )rB   r+   r   r   r   r   *test_relabel_sequential_nonpositive_offset   s   "rR   )r   r
   with0input_starts_at_offsetc                 C   s   |r
t g d}nt g d}|r||dk  | d 7  < t|| d\}}}t|||| |r4|}nt |dk||  d d}t|| d S )NrC   )r   r	   r   r
   r   r   r   r*   )r   r   r   r   rK   r   )r+   rS   rT   r   r   r   r   r'   r   r   r   *test_relabel_sequential_already_sequential   s   rU   c                  C   sJ   t jg dtd} tt t| }W d    d S 1 sw   Y  d S )N)r   r   r   r   r   r   r5   )r   r   floatr   r   	TypeErrorr   )r=   _r   r   r   test_incorrect_input_dtype   s   
"rY   c                  C   sF   t jg dt jd} t| \}}}t|||  t| || d S )Nr2   r5   )r   r   intpr   r   r   r   Z	relabeledr   r   r   r   r   test_arraymap_call   s   r\   c                  C   sz   t jg dt jd} t| \}}}t|dksJ t|tt |ks&J t|dks.J t|tt |ks;J d S )Nr2   r5   r"   r,   )r   r   rZ   r   lenr[   r   r   r   test_arraymap_len   s   r^   c                  C   s>   t jg dt jd} t| \}}}d|d< |d dksJ d S )Nr2   r5   r,   H   )r   r   rZ   r   r[   r   r   r   test_arraymap_set   s   r`   )'numpyr   Zskimage.segmentationr   r   Zskimage._sharedr   Zskimage._shared.testingr   rO   r   r   r(   r0   r4   r9   r@   rA   markZparametrizebyteZshortZintcr%   ZlonglongZubyteZushortZuintcZuintZ	ulonglongrI   rL   rP   rR   rU   rY   r\   r^   r`   r   r   r   r   <module>   s@    
	
	