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 U/home/ubuntu/veenaModal/venv/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   AssertionError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   tpa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   r0      )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.   ignore_sign_on_zerog*Gr   )r   r   r   INFNANr2   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   r3   r   r   r   test_float64_valuesy   s   z*TestAssertPreciseEqual.test_float64_valuesc                 C   s"   t j}| |dt |d d S rH   )r>   float32r   FLT_EPSILONrL   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rI   ig      ?g      rI   r0      r*   r-   r,   r   r.   ulps   gؗҜ<gMg<epsr.   r:   gؗҼ<r8   gC]r2<gq7K<)rJ   r>   r?   rK   r   r   r   r3   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 )NrQ   rI   r0   rR   r*   r-   r,   r+   rS   rU   gHz>gH׊>rV   rW   gv!>g:0yE>)r>   rN   rO   r   r   rX   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 )NrB   rC   r)   y      ?       @r-   y      ?      ?y       @       @r   r   r*   )complexr   r   r   rE   rF   )r   c_ppc_pnc_npc_nnr3   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 )NrQ   rI   r0   r,   r-   rS   r+   )r_   r>   
complex128rK   r   r   r   r3   rY   rZ   r[   r%   aaab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 )NrQ   rI   r0   r,   r-   r+   rS   )r>   	complex64rO   r_   r   r   rf   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 )Nr0   )ColorredgreenblueShakemintShapecirclesquarePlanetEARTHMERCURYr   r   valuer   combinations)r   valuesvalrZ   r[   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   r;   )dtype)r0   rU   r/   FrU   rI   r0   r,   r-   )r>   arangeint16reshapecopyr   r   Tastypeint32flattenflags	writeabler?   rK   )r   rZ   r[   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 )N1900Yz
1900-01-01D1901)r>   
datetime64r   r   r   rZ   r[   r%   r\   r   r   r   test_npdatetime%     z&TestAssertPreciseEqual.test_npdatetimec                 C   r   )Nr   h<   mr0   )r>   timedelta64r   r   r   r   r   r   test_nptimedelta0  r   z'TestAssertPreciseEqual.test_nptimedeltaN)&__name__
__module____qualname____doc__r@   r   r>   rN   r?   r!   rJ   r   rm   re   r"   r_   r   boolbool_r    r   r   r(   r4   r7   rA   rG   rM   rP   r]   r^   rd   rl   rn   r   r   r   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@66)assertRefCountr<   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)nopythonNzcodegen forbidden by test case)r   r<   RuntimeErrorr   r   r   r   )r   r$   raises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>   numbar   
numba.corer   numba.tests.supportr   r   enum_usecasesunittestrK   rO   rJ   rE   rF   r
   r   r   mainr   r   r   r   <module>   s$      ,