U
    #c                  	   @   sT  d Z ddlZddlZddlmZmZmZ G dd dZG dd dZ	G dd	 d	Z
ejejejejejgZejejejejejgZejejejejgZejejejgZG d
d dZ ej!"dde#dej$dej%dgdd Z&ej!"dde$dgdd Z'dd Z(dd Z)ej!"dde#dej$dej%dgdd Z*dd Z+dd  Z,dS )!z;
Test the scalar constructors, which also do type-coercion
    N)assert_equalassert_almost_equalassert_warnsc                   @   s   e Zd Zdd Zdd ZdS )TestFromStringc                 C   s@   t d}t d}t d}t|d t|d t|d d S )Nz1.234gX9v?)npsingledouble
longdoubler   )selffsinglefdoubleflongdouble r   F/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_scalar_ctors.pytest_floating   s    




zTestFromString.test_floatingc                 C   s   t d}t|t j t d}t|t j t d}t|t j ttt jd}t|t j t d}t|t j  t d}t|t j  t d}t|t j  ttt jd}t|t j  dS )z6 Strings containing an unrepresentable float overflow Z1e10000z-1e10000N)	r   halfr   infr   r   r   RuntimeWarningr	   )r
   Zfhalfr   r   r   r   r   r   test_floating_overflow   s     





z%TestFromString.test_floating_overflowN)__name__
__module____qualname__r   r   r   r   r   r   r      s   	r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestExtraArgsc              	   C   s   t jddd}|dkstt dd}|dks2ttt t jddd W 5 Q R X tt t dd W 5 Q R X t ddkstd S )Ns   \x61zunicode-escape)encodingas   \xxs   -2)r   Zstr_AssertionErrorpytestraisesUnicodeDecodeErrorbytes_)r
   sr   r   r   test_superclass+   s    zTestExtraArgs.test_superclassc              	   C   sF   t dd}t |dksttt t jddd W 5 Q R X d S )Nz2000-01)M   2000Tgarbage)r   Z
datetime64Zdatetime_datar   r   r   	TypeError)r
   dtr   r   r   test_datetime;   s    zTestExtraArgs.test_datetimec              	   C   s(   t t tjddd W 5 Q R X d S )NFTr&   )r   r   r(   r   Zbool_r
   r   r   r   	test_boolB   s    zTestExtraArgs.test_boolc              	   C   s(   t t tjddd W 5 Q R X d S )Ns   testTr&   r   r   r(   r   voidr+   r   r   r   	test_voidF   s    zTestExtraArgs.test_voidN)r   r   r   r"   r*   r,   r/   r   r   r   r   r   *   s   r   c                   @   s   e Zd Zdd Zdd ZdS )TestFromIntc                 C   s   t dtd d S )Ni   )r   r   Zintpr+   r   r   r   	test_intpL   s    zTestFromInt.test_intpc              	   C   s0   t t ttdtd W 5 Q R X d S )Nr   l    )r   ZwarnsDeprecationWarningr   r   Zuint64r+   r   r   r   test_uint64_from_negativeP   s    z%TestFromInt.test_uint64_from_negativeN)r   r   r   r1   r3   r   r   r   r   r0   K   s   r0   c                   @   s   e Zd ZdZdd Zejdee	 ejdee	 dg dd Z
ejdeejdedg d	d
 Zejdeejdedg dd ZdS )TestArrayFromScalarz
 gh-15467 c                 C   sD   |d}t j||d}|d kr0|jj|ks@tn|jj|ks@td S )Nr$   dtype)r   arrayr6   typer   )r
   t1t2xZarrr   r   r   _do_test^   s
    zTestArrayFromScalar._do_testr9   r:   Nc                 C   s   |  ||S Nr<   r
   r9   r:   r   r   r   test_integersg   s    z!TestArrayFromScalar.test_integersc                 C   s   |  ||S r=   r>   r?   r   r   r   
test_realsl   s    zTestArrayFromScalar.test_realsc                 C   s   |  ||S r=   r>   r?   r   r   r   test_complexq   s    z TestArrayFromScalar.test_complex)r   r   r   __doc__r<   r   markparametrize	int_types
uint_typesr@   float_typesrA   cfloat_typesrB   r   r   r   r   r4   [   s   	r4   length   r5   c                 C   s>   t | }t|t jkst| dks,t|jdks:td S )Ns        ZV5)r   r.   r8   r   itemr6   )rJ   resr   r   r   test_void_via_lengthw   s    
rN   r    s   spamg     @c                 C   s   t | }t| }t|t jks$t| |ks4tt j| dd}t|t jksTt| d t| |kspt| t|d  d|jt|  kstt j| dd}t|t jkst| |d d kstd S )NZV100r5       ZV4   )r   r.   bytesr8   r   rL   lennbytes)r    rM   expectedr   r   r   test_void_from_byteslike   s    
*rU   c                  C   sD   t d} t| }t|tjks$t|jdks2t|jdks@td S )Ns   just one mintleaf?ZV1)   )
memoryviewr   r.   r8   Zndarrayr   r6   shape)mrM   r   r   r   $test_void_arraylike_trumps_byteslike   s
    
rZ   c                  C   s>   t jddd} |  dkstt dd} |  dks:td S )N)   r$   i,ir5   )r$      )r   r.   rL   r   )rM   r   r   r   test_void_dtype_arg   s    r^   datac                 C   sN   t j| dd}t|t jks t|jdks.t|d dkrF|d dksJtd S )Nr\   r5   Zf0rK   f1)r   r.   r8   r   r6   )r_   rM   r   r   r   !test_void_from_integer_with_dtype   s    ra   c                  C   sj   t dddgfdg} t jd| d}t j|d | d}t|t jksHt|j| ksVt||d ksftd S )Nr!   )fZf8)uZU1)ii2))g      ?r   r$   r5   r   )r   r6   r7   r.   r8   r   )r6   r_   rM   r   r   r   test_void_from_structure   s    rf   c                	   C   sT   t jtdd tjddd W 5 Q R X t jtdd tjddd W 5 Q R X d S )Nz"void: descr must be a `void.*int64)matchrP   i8r5   z#void: descr must be a `void.*\(4,\)Z4ir-   r   r   r   r   test_void_bad_dtype   s    ri   )-rC   r   Znumpyr   Znumpy.testingr   r   r   r   r   r0   byteshortZintcint_ZlonglongrF   ZubyteZushortZuintcZuintZ	ulonglongrG   r   r   r   r	   rH   ZcsingleZcdoubleZclongdoublerI   r4   rD   rE   Zint8r7   Zuint16rN   rU   rZ   r^   ra   rf   ri   r   r   r   r   <module>   s6   !


	
