o
    i;7                     @   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 V/home/ubuntu/transcripts/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_types6   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_valuesQ   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_valuesY   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   r1      )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NANr3   r   r   r   test_float_valuesf   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   r4   r   r   r   test_float64_valuesz   s   z*TestAssertPreciseEqual.test_float64_valuesc                 C   s"   t j}| |dt |d d S rI   )r?   float32r   FLT_EPSILONrM   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rJ   ig      ?g      rJ   r1      r+   r.   r-   r   r/   ulps   gؗҜ<gMg<epsr/   r;   gؗҼ<r9   gC]r2<gq7K<)rK   r?   r@   rL   r   r   r   r4   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 )NrR   rJ   r1   rS   r+   r.   r-   r,   rT   rV   gHz>gH׊>rW   rX   gv!>g:0yE>)r?   rO   rP   r   r   rY   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 )NrC   rD   r*   y      ?       @r.   y      ?      ?y       @       @r   r   r+   )complexr    r   r   rF   rG   )r   c_ppc_pnc_npc_nnr4   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 )NrR   rJ   r1   r-   r.   rT   r,   )r`   r?   
complex128rL   r   r   r   r4   rZ   r[   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 )NrR   rJ   r1   r-   r.   r,   rT   )r?   	complex64rP   r`   r   r   rg   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 )Nr1   )ColorredgreenblueShakemintShapecirclesquarePlanetEARTHMERCURYr   r   valuer   combinations)r   valuesvalr[   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)r1   rV   r0   FrV   rJ   r1   r-   r.   )r?   arangeint16reshapecopyr   r   Tastypeint32flattenflags	writeabler@   rL   )r   r[   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   r[   r\   r&   r]   r   r   r   test_npdatetime&     z&TestAssertPreciseEqual.test_npdatetimec                 C   r   )Nr   h<   mr1   )r?   timedelta64r   r   r   r   r   r   test_nptimedelta1  r   z'TestAssertPreciseEqual.test_nptimedeltaN)&__name__
__module____qualname____doc__rA   r   r?   rO   r@   r"   rK   r   rn   rf   r#   r`   r    boolbool_r!   r   r   r)   r5   r8   rB   rH   rN   rQ   r^   r_   re   rm   ro   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   t  }t  }g }| || W d    n1 sw   Y  | t#}| || || W d    n1 s:w   Y  W d    n1 sIw   Y  | t|t|j d S r   )object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%   Q  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_codegenL  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unittestrL   rP   rK   rF   rG   r
   r   r   mainr   r   r   r   <module>   s$      ,