U
    rh                     @  sP   d dl mZ d dlZd dlZd dlmZ d dlmZ dd Z	G dd deZ
dS )	    )annotationsN)Base)expectc                 C  s.   t j| t jdt j|t jdt j|t jdfS )NZdtype)nparrayint64)indicesinverse_indicescounts r   F/tmp/pip-unpacked-wheel-xnis5xre/onnx/backend/test/case/node/unique.pyspecify_int64   s    r   c                   @  sf   e Zd ZeddddZeddddZeddddZeddd	d
ZeddddZdS )UniqueNone)returnc                  C  s   t jjddgddddgd} tjdd	d	d
dd
gtjd}t|ddd\}}}}t|||\}}}t| |g||||gdd d S )Nr   XYr	   r
   r   )inputsoutputs       @      ?      @      @r   TZtest_unique_sorted_without_axisr   r   name)	onnxhelper	make_noder   r   float32uniquer   r   Znode_sortedxyr	   r
   r   r   r   r   export_sorted_without_axis   s$    
  

z!Unique.export_sorted_without_axisc                    s   t jjddgddddgdd} tjd	d
d
dddgtjd}t|ddd\}}}}t|}tt	|t
t| || }tj||dd}tj fdd|D tjd}|| }t|||\}}}t| |g||||gdd d S )Nr   r   r   r	   r
   r   r   )r   r   sortedr   r   r   r   r   Taxisc                   s   g | ]} | qS r   r   ).0iZinverse_indices_mapr   r   
<listcomp>A   s     z9Unique.export_not_sorted_without_axis.<locals>.<listcomp>Z#test_unique_not_sorted_without_axisr   )r   r   r   r   r   r   r    ZargsortdictzipZarangelenZtakeZasarrayr   r   r   )Znode_not_sortedr"   r#   r	   r
   r   Zargsorted_indicesr   r*   r   export_not_sorted_without_axis*   s<    
	
   

z%Unique.export_not_sorted_without_axisc                  C  s   t jjddgddddgddd	} tjdddgdddgd
ddggtjd}tj|ddddd\}}}}t|||\}}}| }t	| |g||||gdd d S )Nr   r   r   r	   r
   r      r   r   r   r%   r'            r   Tr&   Ztest_unique_sorted_with_axisr   
r   r   r   r   r   r   r    r   Zsqueezer   r!   r   r   r   export_sorted_with_axisW   s*    
(  

zUnique.export_sorted_with_axisc                  C  s   t jjddgddddgddd} tjd	d	gd
d	gdd	gd
d	ggd	d	gd
d	gdd	gd
d	gggtjd}tj|ddddd\}}}}t|||\}}}| }t	| |g||||gdd d S )Nr   r   r   r	   r
   r   r0   r1   r   g        r   r   Tr&   Ztest_unique_sorted_with_axis_3dr   r5   r!   r   r   r   export_sorted_with_axis_3dy   s4    
  

z!Unique.export_sorted_with_axis_3dc                  C  s   t jjddgddddgddd	} tjdd
d
gdd
d
gdddggtjd}tj|ddddd\}}}}t|||\}}}| }t	| |g||||gdd d S )Nr   r   r   r	   r
   r   r0   r1   r   r2   r3   r   Tr&   Z%test_unique_sorted_with_negative_axisr   r5   r!   r   r   r    export_sorted_with_negative_axis   s*    
(  

z'Unique.export_sorted_with_negative_axisN)	__name__
__module____qualname__staticmethodr$   r/   r6   r7   r9   r   r   r   r   r      s   ,!*r   )
__future__r   Znumpyr   r   Zonnx.backend.test.case.baser   Zonnx.backend.test.case.noder   r   r   r   r   r   r   <module>   s   