o
    :ήc.                     @   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 g dg d	g}tt t| | W d    d S 1 sUw   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	   )r   r   r   r   )nparrayr   r   r   raises
ValueError)s1s2jj_refs3 r   K/tmp/pip-target-vg8gfxp4/lib/python/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_reffw_ref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!   r0   r    
r   r   r   r   r   r   r
   r   r!   r    r#   r&   r   r   r   test_relabel_sequential_offset57      

r2   c                  C   r+   )Nr   r   r
   r
   r   r    r!   r   r
   r,   r
   r
   r.   r.   r/   r0   r   r   r"   r   r.   r/   r   r!   r0   r    r1   r#   r&   r   r   r   %test_relabel_sequential_offset5_with0H   r3   r6   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 )Nr4   dtyper
   r,   r5   r"   r   r.   r/   r   r!   r0   r    r1   )	r   r   uint8r   r   astyper%   r   r$   r&   r   r   r   test_relabel_sequential_dtypeY   s   

r;   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!   r7   r,   r   r   r   )	r   iinfoint32maxr   r   uint32r   r8   )imaxlabelsoutputr   r   	referencer   r   r   'test_relabel_sequential_signed_overflowj   s   
rD   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!   r7   r,   r   )r   r<   int64r>   r   r   )r@   rA   rB   r   r   r   r   r   test_very_large_labelst   s   rF   r8   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   r7   r4   c                 3   s    | ]}|j  kV  qd S r   r7   .0ar7   r   r   	<genexpr>   s    z>test_relabel_sequential_int_dtype_stability.<locals>.<genexpr>)r   r   allr   )rG   r8   r   r   r7   r   +test_relabel_sequential_int_dtype_stability{   s   "rN   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 )	NrH   r7      r,   c                 s   s    | ]	}|j tjkV  qd S r   )r8   r   uint16rI   r   r   r   rL      s    z=test_relabel_sequential_int_dtype_overflow.<locals>.<genexpr>r   r   )r   r   r9   r   r   rM   r8   wherer:   r%   r   )r   r-   r   r   r   r'   r   r   r   *test_relabel_sequential_int_dtype_overflow   s    rR   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   
"rV   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 )NrH   r4   r,   rT   )rG   r-   r   r   r   r   *test_relabel_sequential_nonpositive_offset   s   "rX   )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 )NrH   )r   r	   r   r
   r   r   r   r,   )r   r   r   r   rQ   r   )r-   rY   rZ   r   r   r   r   r'   r   r   r   *test_relabel_sequential_already_sequential   s   r[   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   r7   )r   r   floatr   r   	TypeErrorr   )rA   _r   r   r   test_incorrect_input_dtype   s   
"r_   c                  C   sF   t jg dt jd} t| \}}}t|||  t| || d S )Nr4   r7   )r   r   intpr   r   r   r   	relabeledr   r   r   r   r   test_arraymap_call   s   rc   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 )Nr4   r7   r"   r.   )r   r   r`   r   lenra   r   r   r   test_arraymap_len   s   re   c                  C   s>   t jg dt jd} t| \}}}d|d< |d dksJ d S )Nr4   r7   r.   H   )r   r   r`   r   ra   r   r   r   test_arraymap_set   s   rg   )'numpyr   skimage.segmentationr   r   skimage._sharedr   skimage._shared.testingr   rU   r   r   r*   r2   r6   r;   rD   rF   markparametrizebyteshortintcr%   longlongubyteushortuintcuint	ulonglongrN   rR   rV   rX   r[   r_   rc   re   rg   r   r   r   r   <module>   s@    
	
	