U
    qh                     @  sf   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ G dd dej	Z
edkrbe  dS )    )annotationsN)helperc                   @  s   e Zd ZddddZejddddd	d
ddddg
ddddZddddZddddZddddZ	ddddZ
dS )TestAutomaticDowngradestr)opc                 O  s   | j |f||ddi d S )NZ
is_upgradeF)Z_test_op_conversion)selfr   argskwargs r
   X/tmp/pip-unpacked-wheel-xnis5xre/onnx/test/version_converter/automatic_downgrade_test.py_test_op_downgrade   s    z)TestAutomaticDowngrade._test_op_downgradeZReduceL1ZReduceL2ZReduceLogSumZReduceLogSumExpZ
ReduceMeanZ	ReduceMaxZ	ReduceMinZ
ReduceProdZ	ReduceSumZReduceSumSquareNone)returnc              	   C  s`   t jdtjjdgtdddgd}| j|dddd	gdggdddggtjjtjjg|gd
 d S )Nb   r         )Zdimsvals         )Z
from_opsetZinput_shapesZoutput_shapesZinput_typesZinitializer)	r   Zmake_tensoronnxZTensorProtoZINT64nparrayr   FLOAT)r   r   Zaxesr
   r
   r   test_reduce_ops   s       
z&TestAutomaticDowngrade.test_reduce_opsc                 C  s   | j ddd d S )N   z
            <ir_version: 9, opset_import: [ "" : 20]>
            dft_no_axis (float[N, M, 1] x) => (float[N, M, 2] y)
            {
                y = DFT (x)
            }
        Zto_opsetmodelZ_test_model_conversionr   r
   r
   r   test_dft20_no_axis6   s    z)TestAutomaticDowngrade.test_dft20_no_axisc                 C  s   | j ddd d S )Nr   z
            <ir_version: 9, opset_import: [ "" : 20]>
            dft_no_axis (float[N, M, 1] x, int64 dft_length) => (float[N, K, 2] y)
            <int64 axis = {1}>
            {
                y = DFT (x, dft_length, axis)
            }
        r   r   r    r
   r
   r   test_dft20_initializer_axisB   s    z2TestAutomaticDowngrade.test_dft20_initializer_axisc                 C  s   | j ddd d S )Nr   a  
            <ir_version: 9, opset_import: [ "" : 20]>
            dft_no_axis (float[N, M, 1] x, int64 dft_length) => (float[N, K, 2] y)
            {
                axis = Constant <value = int64{1}>()
                y = DFT (x, dft_length, axis)
            }
        r   r   r    r
   r
   r   test_dft20_constant_axisO   s    z/TestAutomaticDowngrade.test_dft20_constant_axisc                 C  s   | j ddd d S )Nr   z
            <ir_version: 9, opset_import: [ "" : 20]>
            dft_no_axis (float[N, M, 1] x, int64 dft_length, int64 axis) => (float[P, K, 2] y)
            {
                y = DFT (x, dft_length, axis)
            }
        r   )Z_test_model_conversion_failsr    r
   r
   r   test_dft20_unknown_axis\   s    z.TestAutomaticDowngrade.test_dft20_unknown_axisN)__name__
__module____qualname__r   parameterizedexpandr   r!   r"   r#   r$   r
   r
   r
   r   r      s&   r   __main__)
__future__r   ZunittestZautomatic_conversion_test_baseZnumpyr   r(   r   r   ZTestAutomaticConversionr   r%   mainr
   r
   r
   r   <module>   s   T