o
    i57                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZm	Z	 ddl
T d dlZdZdZed	Zed
ZG dd deZG dd deZedkrJe  dS dS )    N)jit)utils)TestCaseforbid_codegen   )*g      <g      >infnanc                   @   s   e Zd ZdZegZejejgZ	e
ge	 ZejejgZege ZeejgZdd Zdd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z dd Z!dd Z"d d! Z#d"d# Z$d$d% Z%d&S )'TestAssertPreciseEqualz2
    Tests for TestCase.assertPreciseEqual().
    c                    s@    fdd}||| |||f||f |||g||g d S )Nc                    s,   j | |fi   j || fi   d S )N)assertPreciseEqualleftrightkwargsself g/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/test_support.pyassert_succeed   s   z1TestAssertPreciseEqual.eq.<locals>.assert_succeedr   )r   r   r   r   r   r   r   r   eq   s   
zTestAssertPreciseEqual.eqc                    sn    fdd}||| ||| |||f||f |||f||f |||g||g |||g||g d S )Nc                    sD   zj | |fi   W n
 ty   Y d S w d| |f  d S )Nz'%s and %s unexpectedly considered equal)r   AssertionErrorZfailr   r   r   r   assert_fail'   s   z.TestAssertPreciseEqual.ne.<locals>.assert_failr   )r   r   r   r   r   r   r   r   ne&   s   

zTestAssertPreciseEqual.nec                 C   sT  t | j| j| jD ]#\}}}| |d|d | |d|d | |d|d q
t | j| jD ]\}}| |d|d q6t | j| jD ]\}}| |d|d qMt | j| jD ]\}}||u rw| |d|d qd| |d|d qdt | j	| j	D ]\}}||u r| |d|d q| |d|d qd S Nr   )
	itertoolsproduct	int_typesfloat_typescomplex_typesr   r   
bool_typesnp_float_typesnp_complex_types)r   ifcuvr   r   r   
test_types5   s&   z!TestAssertPreciseEqual.test_typesc                 C   s   | j D ]=}dD ]8}| j|d|d|d | j|d|d|d | j|d|d|d | j|dd |ddd  |d qqd S )Nexactsingledoubler   precr      P   )r   r   r   r   tpr-   r   r   r   test_int_valuesP   s   
&z&TestAssertPreciseEqual.test_int_valuesc                 C   sZ   t | j| jD ]"\}}| |d|d | |d|d | |d|d qd S )NTF)r   r   r   r   r   )r   ZtpaZtpbr   r   r   test_bool_valuesX   s
   z'TestAssertPreciseEqual.test_bool_valuesc                 C   s   |  t | jtdtddd W d    n1 sw   Y  |  t | jtdtdtdd W d    d S 1 sDw   Y  d S )NFFg<invalid)abs_tolr   r/      )assertRaises
ValueErrorr   npfloat64int)r   r   r   r   test_abs_tol_parse^   s   ""z)TestAssertPreciseEqual.test_abs_tol_parsec                 C   s\  | j D ]}dD ]}| j|d|d|d | j|d|d|d | j|d|d|d | j|d|d|d | j|d|d|dd | j|t|t|d | j|t|d|d | j|t |t |d | j|t|t |d | j|t|t|d | j|t|d	|d | j|t|t|d | j|t|t |d qqd S )
Nr(   g      ?r,                  T)r-   Zignore_sign_on_zerog*Gr   )r   r   r   INFNANr1   r   r   r   test_float_valuese   s"   
z(TestAssertPreciseEqual.test_float_valuesc                 C   s,   t tjfD ]}| |dt |d qd S N      ?)floatr;   r<   r   DBL_EPSILONr   r2   r   r   r   test_float64_valuesy   s   z*TestAssertPreciseEqual.test_float64_valuesc                 C   s"   t j}| |dt |d d S rD   )r;   float32r   FLT_EPSILONrH   r   r   r   test_float32_values}   s   z*TestAssertPreciseEqual.test_float32_valuesc                 C   s  t tjfD ]}dD ]}|d }|dt  }|dtd   }|dtd   }| |||| | j||||dd | j||||dd | j||||ddd	 | j||||dd | j||||ddd	 | j||||ddd	 | j||||dd
d	 | j||||dd
d	 q	| j|d|dddd | j|d|dddd | j|d|dddd | j|d|dddd qd S )NrE   ig      ?g      rE   r/      r)   r,   r+   r   r-   Zulps   gؗҜ<gMg<epsr-   r7   gؗҼ<r5   gC]r2<gq7K<)rF   r;   r<   rG   r   r   r   r2   scaleabr$   dr   r   r   test_float64_values_inexact   s(   z2TestAssertPreciseEqual.test_float64_values_inexactc                 C   s  t j}dD ]}|d }|dt  }|dtd   }|dtd   }| |||| | j||||dd | j||||dd | j||||dd | j||||dd | j||||ddd	 | j||||ddd	 | j||||dd
d	 | j||||dd
d	 q| j|d|dddd | j|d|dddd | j|d|dddd | j|d|dddd d S )NrM   rE   r/   rN   r)   r,   r+   r*   rO   rP   gHz>gH׊>rQ   rR   gv!>g:0yE>)r;   rJ   rK   r   r   rS   r   r   r   test_float32_values_inexact   s&   z2TestAssertPreciseEqual.test_float32_values_inexactc                 C   s  t ddt ddt ddt ddg\}}}}| jD ]J}dD ]2}| j|d|d|d | j|d|d|d | j|d|d|d | j|||||d | j|||||d | j|||||d | j|||||d | j|||||d | j|t tt|t tt|d | j|t tt |t tt |d | j|t t t |t t t |d | j|t tt|t tt |d | j|t tt|t t t|d | j|t td|t td|d | j|t td|t td|d | j|t dt|t dt|d | j|t tt|t tt|d | j|t tt|t tt|d | j|t tt |t tt |d q| j|t td|t td	d
d qd S )Nr?   r@   r(   y      ?       @r,   y      ?      ?y       @       @r   r   r)   )complexr   r   r   rA   rB   )r   Zc_ppZc_pnZc_npZc_nnr2   r-   r   r   r   test_complex_values   s4   
$(,&&$$$$$*&z*TestAssertPreciseEqual.test_complex_valuesc                 C   sz  t tjfD ]}dD ]}|d }|dt  }|dtd   }|t ||}|t ||}|t ||}| |||| | j||||dd | j||||dd | j||||dd |t ||}	|t ||}
| j||||	dd | j||	||
dd | j||||	ddd | j||	||
ddd | j||||
ddd | j||||
dd q	qd S )NrM   rE   r/   r+   r,   rO   r*   )rZ   r;   
complex128rG   r   r   r   r2   rT   rU   rV   r$   ZaaabZbbacccr   r   r   test_complex128_values_inexact   s,   z5TestAssertPreciseEqual.test_complex128_values_inexactc                 C   sp  t j}dD ]}|d }|dt  }|dtd   }|t||}|t||}|t||}| |||| | j||||dd | j||||dd | j||||dd | j||||dd |t||}	|t||}
| j||||	dd | j||	||
dd | j||||	ddd | j||	||
ddd | j||||
ddd qd S )NrM   rE   r/   r+   r,   r*   rO   )r;   	complex64rK   rZ   r   r   r]   r   r   r   test_complex64_values_inexact   s*   z4TestAssertPreciseEqual.test_complex64_values_inexactc                 C   sn   t jt jt jtjtjtjt	j
t	jg}|D ]}| || | ||j qt|dD ]
\}}| || q*d S )Nr/   )ColorredgreenblueZShakeZmintZShapecircleZsquareZPlanetZEARTHZMERCURYr   r   valuer   combinations)r   valuesvalrU   rV   r   r   r   
test_enums  s   z!TestAssertPreciseEqual.test_enumsc                 C   s  t jddt jdd}| }| || | ||d  | ||d d  | ||j | ||t j	 | ||j j | ||
  d|j_| || t jddt jd}|dt  }|dtd	   }| || | j||d
d | j||d
d d S )Nr   r8   )Zdtype)r/   rP   r.   FrP   rE   r/   r+   r,   )r;   ZarangeZint16Zreshapecopyr   r   TZastypeZint32flattenflagsZ	writeabler<   rG   )r   rU   rV   r$   r   r   r   test_arrays  s"   z"TestAssertPreciseEqual.test_arraysc                 C   X   t dd}t dd}t dd}t dd}| || | || | || d S )NZ1900Yz
1900-01-01DZ1901)r;   Z
datetime64r   r   r   rU   rV   r$   rW   r   r   r   test_npdatetime%     z&TestAssertPreciseEqual.test_npdatetimec                 C   rs   )Nr   h<   mr/   )r;   Ztimedelta64r   r   rv   r   r   r   test_nptimedelta0  rx   z'TestAssertPreciseEqual.test_nptimedeltaN)&__name__
__module____qualname____doc__r=   r   r;   rJ   r<   r    rF   r   rb   r\   r!   rZ   r   boolZbool_r   r   r   r'   r3   r4   r>   rC   rI   rL   rX   rY   r[   ra   rc   rm   rr   rw   r|   r   r   r   r   r
      s4    


&	r
   c                   @   s   e Zd Zdd Zdd ZdS )TestMiscc              	   C   s   d}d}g }|  || W d    n1 sw   Y  | t#}|  || || W d    n1 s8w   Y  W d    n1 sGw   Y  | dt|j d S )Ng     K@g     P@Z66)ZassertRefCountr9   r   appendassertInstr	exception)r   xylcmr   r   r   test_assertRefCount>  s   zTestMisc.test_assertRefCountc              	   C   s   dd }t  ' | t}tdd|}|  W d   n1 s"w   Y  W d   n1 s1w   Y  | dt|j dS )zg
        Test that forbid_codegen() prevents code generation using the @jit
        decorator.
        c                   S   s   dS r   r   r   r   r   r   r#   P  s   z'TestMisc.test_forbid_codegen.<locals>.fT)ZnopythonNzcodegen forbidden by test case)r   r9   RuntimeErrorr   r   r   r   )r   r#   ZraisesZcfuncr   r   r   test_forbid_codegenK  s   zTestMisc.test_forbid_codegenN)r}   r~   r   r   r   r   r   r   r   r   <  s    r   __main__)r   numpyr;   Znumbar   Z
numba.corer   Znumba.tests.supportr   r   Zenum_usecasesZunittestrG   rK   rF   rA   rB   r
   r   r}   mainr   r   r   r   <module>   s$      ,