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ZmZ ddlZddl	Z
ddlmZmZ G dd dZG dd dZejjejd	k d
dG dd dZejjejd	kddejde
je
je
jgdee
j ddfddZG dd dZdS )z;
Test the scalar constructors, which also do type-coercion
    N)AnyType)assert_equalassert_raisesc                   @   s8  e Zd Zejdejejej	ej
gejdg ddd Zejdejejej	ej
gdd Zejdejejej	ej
gdd	 Zd
d Zejdejg dg dfejg dg dfej	g dg dfejej
g dg dejjeej	eej
kddejje dddgdgdd ZdS )TestAsIntegerRatioftypezf, ratio))g      ?)      )g      )ir	   )        )r      )g      '@)      c                 C   s   t || | d S N)r   as_integer_ratio)selfr   fratio r   K/tmp/pip-target-vg8gfxp4/lib/python/numpy/core/tests/test_scalar_methods.py
test_small   s   	zTestAsIntegerRatio.test_smallc                 C   sz   t j}t|dd||d   t|dd||d   t|dd||d   t|dd||d	   d S )
Nr   r   r
      r   g      @g      ?ig     h)	fractionsFractionr   r   )r   r   Rr   r   r   test_simple_fractions   s   



z(TestAsIntegerRatio.test_simple_fractionsc                 C   s4   t t|dj t t|dj t t|dj d S )Ninfz-infnan)r   OverflowErrorr   
ValueError)r   r   r   r   r   test_errors+   s   zTestAsIntegerRatio.test_errorsc                 C   s   t j}t|dd|td   t|dd|td   t|dd|td   t|dd|td   t|d	d
|td   t|dd
|td   d S )Ni3  i   g @ig i33C i    i̼l   L33 l         @ lL33 )r   r   r   nphalfr   singledouble)r   r   r   r   r   test_against_known_values2   s&   





z,TestAsIntegerRatio.test_against_known_valueszftype, frac_vals, exp_vals)r
   gu?gi(?g1?g_?)r   r   r   i   )r
   g%?g?g1,B?gJfu?)r   r%   
      i)r
   gB П?gɱk?gu&>L?gFO?)r   i3      is)r
   gMJ ;?gޫ_?gКAQ?g8O?)r   ii7  irizlong double is same as doublereasonppczIBM double double)marksc              
   C   s   t ||D ]F\}}t|||}|j|ksJ | \}}ztt|}	tt|}
W n ttfy>   t	
d Y nw t|	|
 |d|| qd S )Nz%longdouble too small on this platformz{}/{})zipr    ldexpdtyper   
longdoublestrr   RuntimeWarningpytestskipr   format)r   r   	frac_valsexp_valsfracexpr   ndnfdfr   r   r   test_roundtripB   s   z!TestAsIntegerRatio.test_roundtripN)__name__
__module____qualname__r4   markparametrizer    r!   r"   r#   r1   r   r   r   r$   paramskipiffinfoplatformmachine
startswithr?   r   r   r   r   r      sR    




r   c                   @   s   e Zd Zejdddgejdejd dededdfdd	Z	ejdejd ejd
  deddfddZ
ejdejd deddfddZdS )TestIsInteger	str_valuer   r   codeFloatreturnNc                 C   s$   t |j}||}| rJ d S r   )r    r0   type
is_integer)r   rM   rL   clsvaluer   r   r   test_specialo   s   zTestIsInteger.test_special
AllIntegerc                 C   s,   t dd|}|D ]}| sJ qd S )Nr   r    arangeastyperQ   r   rM   float_arrayrS   r   r   r   	test_truev   s   zTestIsInteger.test_truec                 C   s>   t dd|}|d9 }|D ]}|dkrq| rJ qd S )NrV   r   g?r   rW   rZ   r   r   r   
test_false~   s   zTestIsInteger.test_false)r@   rA   rB   r4   rC   rD   r    	typecodesr2   rT   r\   r]   r   r   r   r   rK   n   s    rK   )   	   zRequires python 3.9r*   c                	   @   s   e Zd Zejdejejej	ej
ejejgdeej ddfddZdddZejded	deddfd
dZejdejejejgdeej ddfddZejdejd deddfddZejded	deddfddZdddZdS )TestClassGetItemrR   rO   Nc                 C   s*   |t  }t|tjsJ |j|u sJ d S r   )r   
isinstancetypesGenericAlias
__origin__)r   rR   aliasr   r   r   test_abc   s   	zTestClassGetItem.test_abcc                 C   s2   t jttf }t|tjsJ |jt ju sJ d S r   )r    complexfloatingr   rb   rc   rd   re   )r   rf   r   r   r   test_abc_complexfloating   s   z)TestClassGetItem.test_abc_complexfloatingarg_len   c                 C   sz   t f| }|dv rtj| sJ d S d|dkrdnd d}tjt|d tj|  W d    d S 1 s6w   Y  d S )N)r   r   zToo r   fewmanyz
 argumentsmatch)r   r    rh   r4   raises	TypeError)r   rj   arg_tupro   r   r   r   (test_abc_complexfloating_subscript_tuple   s   
"z9TestClassGetItem.test_abc_complexfloating_subscript_tuplec                 C   s8   t t |t  W d    d S 1 sw   Y  d S r   r4   rp   rq   r   )r   rR   r   r   r   test_abc_non_numeric   s   
"z%TestClassGetItem.test_abc_non_numericrM   Allc                 C   sD   t |j}tt |t  W d    d S 1 sw   Y  d S r   )r    r0   rP   r4   rp   rq   r   )r   rM   rR   r   r   r   test_concrete   s   
"zTestClassGetItem.test_concretec                 C   s^   t f| }|dkrtj| sJ d S tt tj|  W d    d S 1 s(w   Y  d S )Nr   )r   r    numberr4   rp   rq   )r   rj   rr   r   r   r   test_subscript_tuple   s   
"z%TestClassGetItem.test_subscript_tuplec                 C   s   t jt sJ d S r   )r    rx   r   )r   r   r   r   test_subscript_scalar   s   z&TestClassGetItem.test_subscript_scalar)rO   N)r@   rA   rB   r4   rC   rD   r    rx   integerinexactunsignedintegersignedintegerfloatingr   rg   ri   rangeintrs   genericflexible	characterru   r^   r2   rw   ry   rz   r   r   r   r   ra      s(    
	ra   zRequires python 3.8rR   rO   c                 C   s@   d}t jt|d | t  W d    d S 1 sw   Y  d S )Nz(Type subscription requires python >= 3.9rn   rt   )rR   ro   r   r   r   test_class_getitem_38   s   
"r   c                   @   s:   e Zd Zejdejd ejd  dd Zdd Z	dS )	TestBitCountityper   uintc                 C   sV   t tt|jddD ]}d| d| d}|| t|dks(J |qd S )Nr      zSmoke test for (z).bit_count()1)r   maxr    iinfomin	bit_countbincount)r   r   amsgr   r   r   r      s   $zTestBitCount.test_smallc                 C   s   dD ]<}d| }t | dksJ t |d  |ks J t |dA  dks-J t |d dA  |d ks>J qd S )N)r&   r'   ?   r   r   r   r   i  r	   )r    uint64r   )r   r:   r   r   r   r   test_bit_count   s   $zTestBitCount.test_bit_countN)
r@   rA   rB   r4   rC   rD   r    sctypesr   r   r   r   r   r   r      s    
r   )__doc__sysr   rH   rc   typingr   r   r4   numpyr    numpy.testingr   r   r   rK   rC   rF   version_infora   rD   rx   rh   int64r   r   r   r   r   r   <module>   s"    ^5