o
    1ή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   sR   d tt|}tjt|d}| | W d    d S 1 s"w   Y  d S )Nz
\(got {}\))match)formatreescapereprpytestraises
ValueErrorconv)selfvalpatternexc r   M/tmp/pip-target-vg8gfxp4/lib/python/numpy/core/tests/test_conversion_utils.py_check_value_error   s   "z*StringConverterTestCase._check_value_errorc                 C   s\   | j r#tt}| ||ksJ W d    d S 1 sw   Y  d S | ||ks,J d S N)warnr   DeprecationWarningr   )r   r   expectedr   r   r   r   _check_conv_assert_warn   s
   
"z/StringConverterTestCase._check_conv_assert_warnc                 C   s6  |  ||ks	J | jr|  |d|ksJ ntt |  |d W d   n1 s1w   Y  t|dkrZ| jrP| |dd  | |d  n
| 	|dd | | j
r}|| krk| 	| | || kr{| 	| | dS dS || kr| |  || kr| |  dS dS )zTakes valid non-deprecated inputs for converters,
        runs converters on inputs, checks correctness of outputs,
        warnings and errorsasciiN    )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   sn   t t | i  W d    n1 sw   Y  t t | g  W d    d S 1 s0w   Y  d S r   r
   r   r   r   r   r   r   r   test_wrong_type>   s   "z'StringConverterTestCase.test_wrong_typec                 C   sF   |  d |  d | jr|  d |  d | jr!|  d d S 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                   @   "   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 qdD ]}|  |d q#d	D ]}|  |d
 q.d S )N)big>NPY_BIG)little<
NPY_LITTLE)native=
NPY_NATIVE)ignore|
NPY_IGNORE)swapNPY_SWAPr%   )r   sr   r   r   
test_validW   s   z!TestByteorderConverter.test_validN)	r-   r.   r/   __doc__mtrun_byteorder_converterr   r   rB   r   r   r   r   r1   R   
    r1   c                   @   r0   )TestSortkindConverterz$ Tests of PyArray_SortkindConverter Fc                 C   s4   |  dd |  dd |  dd |  dd d S )N	quicksortNPY_QUICKSORTheapsortNPY_HEAPSORT	mergesortNPY_STABLESORTstabler@   r'   r   r   r   rB   i      z TestSortkindConverter.test_validN)	r-   r.   r/   rC   rD   run_sortkind_converterr   r   rB   r   r   r   r   rG   d   rF   rG   c                   @   &   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 )NintroselectNPY_INTROSELECTr@   r'   r   r   r   rB   v   s   z"TestSelectkindConverter.test_validN)
r-   r.   r/   rC   rD   run_selectkind_converterr   r"   r!   rB   r   r   r   r   rR   p       rR   c                   @      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leftNPY_SEARCHLEFTrightNPY_SEARCHRIGHTr@   r'   r   r   r   rB   }   s   z"TestSearchsideConverter.test_validN)r-   r.   r/   rC   rD   run_searchside_converterr   rB   r   r   r   r   rX   z       rX   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c
NPY_CORDERfNPY_FORTRANORDERaNPY_ANYORDERkNPY_KEEPORDERr@   r'   r   r   r   rB      rO   zTestOrderConverter.test_validc              	   C   sv   t t | d W d    n1 sw   Y  dD ]}t t | | W d    n1 s3w   Y  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.   r/   rC   rD   run_order_converterr   r   rB   rk   r   r   r   r   r_      s    r_   c                   @   rW   )TestClipmodeConverterz$ Tests of PyArray_ClipmodeConverter c                 C   sd   |  dd |  dd |  dd | tjdksJ | tjdks&J | tjdks0J d S )NclipNPY_CLIPwrapNPY_WRAPraise	NPY_RAISE)r%   r   npCLIPWRAPRAISEr'   r   r   r   rB      s   z TestClipmodeConverter.test_validN)r-   r.   r/   rC   rD   run_clipmode_converterr   rB   r   r   r   r   rm      r^   rm   c                   @   rQ   )TestCastingConverterz# Tests of PyArray_CastingConverter FTc                 C   s@   |  dd |  dd |  dd |  dd |  d	d
 d S )NnoNPY_NO_CASTINGequivNPY_EQUIV_CASTINGsafeNPY_SAFE_CASTING	same_kindNPY_SAME_KIND_CASTINGunsafeNPY_UNSAFE_CASTINGr@   r'   r   r   r   rB      s
   zTestCastingConverter.test_validN)
r-   r.   r/   rC   rD   run_casting_converterr   r"   r!   rB   r   r   r   r   ry      rV   ry   c                   @   sZ   e Zd ZdZejZdd Zdd Ze	j
jeoe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	J |  ddksJ |  ddgdksJ |  ddks&J d S )Nr   )r   )r      r   r   )r   r'   r   r   r   
test_basic   s   zTestIntpConverter.test_basicc                 C   sB   t t | d dksJ W d    d S 1 sw   Y  d S )Nr   )r
   warnsr   r   r'   r   r   r   	test_none   s   "zTestIntpConverter.test_none)      ri   zPyPy bug in error formatting)reasonc                 C   sr   t t | d W d    n1 sw   Y  t t | ddg W d    d S 1 s2w   Y  d S )Ng      ?r   r&   r'   r   r   r   
test_float   s   "zTestIntpConverter.test_floatc                 C   s:   t t | d W d    d S 1 sw   Y  d S )Nl            )r
   r   r   r   r'   r   r   r   test_too_large   s   "z TestIntpConverter.test_too_largec                 C   sX   |  dgd dksJ tt |  dgd  W d    d S 1 s%w   Y  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   test_too_many_dims   s   "z$TestIntpConverter.test_too_many_dimsN)r-   r.   r/   rC   rD   run_intp_converterr   r   r   r
   markskipifr   sysimplementationversionr   r   r   r   r   r   r   r      s    
r   )rC   r   r   r
   numpyrt   numpy.core._multiarray_testscore_multiarray_testsrD   numpy.testingr   r   r   r1   rG   rR   rX   r_   rm   ry   r   r   r   r   r   <module>   s     D
