U
    #ºcŸ  ã                   @   sÖ   d Z ddlZddlZddlZddlZddlm  mZ	 ddl
mZmZ G dd„ dƒZG dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ dƒZdS )z8
Tests for numpy/core/src/multiarray/conversion_utils.c
é    N)Úassert_warnsÚIS_PYPYc                   @   sD   e Zd ZdZdZdZdZdd„ Zdd„ Zdd„ Z	d	d
„ Z
dd„ ZdS )ÚStringConverterTestCaseTFc              	   C   s<   d  t t|ƒ¡¡}tjt|d}|  |¡ W 5 Q R X d S )Nz
\(got {}\))Úmatch)ÚformatÚreÚescapeÚreprÚpytestÚraisesÚ
ValueErrorÚconv)ÚselfÚvalÚpatternÚexc© r   úJ/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_conversion_utils.pyÚ_check_value_error   s    z*StringConverterTestCase._check_value_errorc              	   C   sD   | j r.ttƒ}|  |¡|ks"t‚W 5 Q R X n|  |¡|ks@t‚d S ©N)Úwarnr   ÚDeprecationWarningr   ÚAssertionError)r   r   Úexpectedr   r   r   r   Ú_check_conv_assert_warn   s    
z/StringConverterTestCase._check_conv_assert_warnc              	   C   s  |   |¡|kst‚| jr2|   | d¡¡|ksXt‚n&t t¡ |   | d¡¡ W 5 Q R X t|ƒdkr | jrŒ|  	|dd… ¡ |  	|d ¡ n|  
|dd… |¡ | jrà|| ¡ krÂ|  
| ¡ |¡ || ¡ krÞ|  
| ¡ |¡ n6|| ¡ krú|  	| ¡ ¡ || ¡ kr|  	| ¡ ¡ dS )zTakes valid non-deprecated inputs for converters,
        runs converters on inputs, checks correctness of outputs,
        warnings and errorsÚasciié   Nú )r   r   Úallow_bytesÚencoder
   r   Ú	TypeErrorÚlenÚexact_matchr   r   Úcase_insensitiveÚlowerÚupper)r   r   r   r   r   r   Ú_check    s&    zStringConverterTestCase._checkc              	   C   sD   t  t¡ |  i ¡ W 5 Q R X t  t¡ |  g ¡ W 5 Q R X d S r   ©r
   r   r    r   ©r   r   r   r   Útest_wrong_type>   s    z'StringConverterTestCase.test_wrong_typec                 C   sB   |   d¡ |   d¡ | jr.|   d¡ |   d¡ | jr>|   d¡ d S )NÚ u   Ï€ó    ó   ÿz there's no way this is supported)r   r   r"   r(   r   r   r   Útest_wrong_valueE   s    



z(StringConverterTestCase.test_wrong_valueN)Ú__name__Ú
__module__Ú__qualname__r   r#   r"   r   r   r   r&   r)   r-   r   r   r   r   r      s   r   c                   @   s"   e Zd ZdZejZdZdd„ ZdS )ÚTestByteorderConverterz% Tests of PyArray_ByteorderConverter Fc                 C   sr   dD ]}|   |d¡ qdD ]}|   |d¡ qdD ]}|   |d¡ q0dD ]}|   |d¡ qFd	D ]}|   |d
¡ q\d S )N)Úbigú>ZNPY_BIG)Úlittleú<Z
NPY_LITTLE)Znativeú=Z
NPY_NATIVE)Úignoreú|Z
NPY_IGNORE)ZswapZNPY_SWAP©r&   )r   Úsr   r   r   Ú
test_validW   s    z!TestByteorderConverter.test_validN)	r.   r/   r0   Ú__doc__ÚmtZrun_byteorder_converterr   r   r;   r   r   r   r   r1   R   s   r1   c                   @   s"   e Zd ZdZejZdZdd„ ZdS )ÚTestSortkindConverterz$ Tests of PyArray_SortkindConverter Fc                 C   s4   |   dd¡ |   dd¡ |   dd¡ |   dd¡ d S )NZ	quicksortZNPY_QUICKSORTZheapsortZNPY_HEAPSORTZ	mergesortZNPY_STABLESORTZstabler9   r(   r   r   r   r;   i   s    z TestSortkindConverter.test_validN)	r.   r/   r0   r<   r=   Zrun_sortkind_converterr   r   r;   r   r   r   r   r>   d   s   r>   c                   @   s&   e Zd ZdZejZdZdZdd„ Z	dS )ÚTestSelectkindConverterz& Tests of PyArray_SelectkindConverter FTc                 C   s   |   dd¡ d S )NZintroselectZNPY_INTROSELECTr9   r(   r   r   r   r;   v   s    z"TestSelectkindConverter.test_validN)
r.   r/   r0   r<   r=   Zrun_selectkind_converterr   r#   r"   r;   r   r   r   r   r?   p   s
   r?   c                   @   s   e Zd ZdZejZdd„ ZdS )ÚTestSearchsideConverterz& Tests of PyArray_SearchsideConverter c                 C   s   |   dd¡ |   dd¡ d S )NÚleftZNPY_SEARCHLEFTÚrightZNPY_SEARCHRIGHTr9   r(   r   r   r   r;   }   s    z"TestSearchsideConverter.test_validN)r.   r/   r0   r<   r=   Zrun_searchside_converterr   r;   r   r   r   r   r@   z   s   r@   c                   @   s*   e Zd ZdZejZdZdd„ Zdd„ Z	dS )ÚTestOrderConverterz! Tests of PyArray_OrderConverter Fc                 C   s4   |   dd¡ |   dd¡ |   dd¡ |   dd¡ d S )	NÚcZ
NPY_CORDERÚfZNPY_FORTRANORDERÚaZNPY_ANYORDERÚkZNPY_KEEPORDERr9   r(   r   r   r   r;   ‡   s    zTestOrderConverter.test_validc              
   C   sN   t  t¡ |  d¡ W 5 Q R X dD ]$}t  t¡ |  |¡ W 5 Q R X q$d S )NÚZ)FTr   é   )r
   r   r   r   r    )r   Úorderr   r   r   Útest_flatten_invalid_order   s
    z-TestOrderConverter.test_flatten_invalid_orderN)
r.   r/   r0   r<   r=   Zrun_order_converterr   r   r;   rK   r   r   r   r   rC   ‚   s
   rC   c                   @   s   e Zd ZdZejZdd„ ZdS )ÚTestClipmodeConverterz$ Tests of PyArray_ClipmodeConverter c                 C   sd   |   dd¡ |   dd¡ |   dd¡ |  tj¡dks8t‚|  tj¡dksLt‚|  tj¡dks`t‚d S )NZclipZNPY_CLIPÚwrapZNPY_WRAPÚraiseZ	NPY_RAISE)r&   r   ÚnpZCLIPr   ZWRAPZRAISEr(   r   r   r   r;   ™   s    z TestClipmodeConverter.test_validN)r.   r/   r0   r<   r=   Zrun_clipmode_converterr   r;   r   r   r   r   rL   –   s   rL   c                   @   s&   e Zd ZdZejZdZdZdd„ Z	dS )ÚTestCastingConverterz# Tests of PyArray_CastingConverter FTc                 C   s@   |   dd¡ |   dd¡ |   dd¡ |   dd¡ |   d	d
¡ d S )NÚnoZNPY_NO_CASTINGÚequivZNPY_EQUIV_CASTINGÚsafeZNPY_SAFE_CASTINGZ	same_kindZNPY_SAME_KIND_CASTINGZunsafeZNPY_UNSAFE_CASTINGr9   r(   r   r   r   r;   ª   s
    zTestCastingConverter.test_validN)
r.   r/   r0   r<   r=   Zrun_casting_converterr   r#   r"   r;   r   r   r   r   rP   ¤   s
   rP   c                   @   sZ   e Zd ZdZejZdd„ Zdd„ Ze	j
jeo6ejjdkddd	d
„ ƒZdd„ Zdd„ ZdS )ÚTestIntpConverterz  Tests of PyArray_IntpConverter c                 C   sP   |   d¡dkst‚|   d¡dks$t‚|   ddg¡dks:t‚|   d¡dksLt‚d S )Nr   )r   )r   é   rU   r   )r   r   r(   r   r   r   Ú
test_basic¶   s    zTestIntpConverter.test_basicc              	   C   s,   t  t¡ |  d ¡dkst‚W 5 Q R X d S )Nr   )r
   Zwarnsr   r   r   r(   r   r   r   Ú	test_none¼   s    zTestIntpConverter.test_none)é   é   rI   zPyPy bug in error formatting)Úreasonc              	   C   sH   t  t¡ |  d¡ W 5 Q R X t  t¡ |  ddg¡ W 5 Q R X d S )Ng      ð?r   r'   r(   r   r   r   Ú
test_floatÁ   s    zTestIntpConverter.test_floatc              	   C   s$   t  t¡ |  d¡ W 5 Q R X d S )Nl            )r
   r   r   r   r(   r   r   r   Útest_too_largeÉ   s    z TestIntpConverter.test_too_largec              	   C   sB   |   dgd ¡dkst‚t t¡ |   dgd ¡ W 5 Q R X d S )Nr   é    ) 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   é!   )r   r   r
   r   r   r(   r   r   r   Útest_too_many_dimsÍ   s    z$TestIntpConverter.test_too_many_dimsN)r.   r/   r0   r<   r=   Zrun_intp_converterr   rV   rW   r
   ÚmarkZskipifr   ÚsysÚimplementationÚversionr[   r\   r_   r   r   r   r   rT   ²   s   ÿ
rT   )r<   r   ra   r
   ZnumpyrO   Znumpy.core._multiarray_testsÚcoreZ_multiarray_testsr=   Znumpy.testingr   r   r   r1   r>   r?   r@   rC   rL   rP   rT   r   r   r   r   Ú<module>   s   D
