
    J/Ph57                         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e          Z G d de          Zedk    r ej                     dS dS )    N)jit)utils)TestCaseforbid_codegen   )*g      <g      >infnanc                       e Zd ZdZegZej        ej        gZ	e
ge	z   Zej        ej        gZegez   Zeej        gZd Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%dS )TestAssertPreciseEqualz2
    Tests for TestCase.assertPreciseEqual().
    c                 n      fd} |||            |||f||f            |||g||g           d S )Nc                 D     j         | |fi   j         || fi  d S )N)assertPreciseEqualleftrightkwargsselfs     X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_support.pyassert_succeedz1TestAssertPreciseEqual.eq.<locals>.assert_succeed   sC    #D#D%::6:::#D#E4::6:::::     )r   r   r   r   r   s   `  ` r   eqzTestAssertPreciseEqual.eq   sp    	; 	; 	; 	; 	; 	; 	tU###d|eU^444d|eU^44444r   c                       fd} |||            |||            |||f||f            |||f||f            |||g||g            |||g||g           d S )Nc                     	  j         | |fi                      | d|d           d S # t          $ r Y d S w xY w)Nz and z unexpectedly considered equal)r   failAssertionErrorr   s     r   assert_failz.TestAssertPreciseEqual.ne.<locals>.assert_fail'   sq    U''e>>v>>> 		tttUUUSTTTTT "   s   / 
==r   )r   r   r   r   r   s   `  ` r   nezTestAssertPreciseEqual.ne&   s    	U 	U 	U 	U 	U 	U 	D%   E4   T4L5%.111UENT4L111T4L5%.111UENT4L11111r   c                 j   t          j        | j        | j        | j                  D ]~\  }}}|                      |d           |d                     |                      |d           |d                     |                      |d           |d                     t          j        | j        | j                  D ]-\  }}|                      |d           |d                     .t          j        | j        | j                  D ]-\  }}|                      |d           |d                     .t          j        | j        | j                  D ]Z\  }}||u r)|                      |d           |d                     2|                      |d           |d                     [t          j        | j	        | j	                  D ]Z\  }}||u r)|                      |d           |d                     2|                      |d           |d                     [d S Nr   )
	itertoolsproduct	int_typesfloat_typescomplex_typesr   r   
bool_typesnp_float_typesnp_complex_types)r   ifcuvs         r   
test_typesz!TestAssertPreciseEqual.test_types5   s>    !(9I)-);= = 	  	 GAq!GGAAaDD!!A$$GGAAaDD!!A$$GGAAaDD!!A$$%dndnEE 	  	 DAqGGAAaDD!!A$$%dndoFF 	  	 DAqGGAAaDD!!A$$%d&94;NOO 	$ 	$DAqAvv!aadd####!aadd####%d&;T=RSS 	$ 	$DAqAvv!aadd####!aadd####		$ 	$r   c           
         | j         D ]}dD ]}|                      |d           |d          |           |                      |d           |d          |           |                      |d           |d          |           |                      |ddz             |dddz  z             |           d S )Nexactsingledoubler   precr      P   )r$   r   r   r   tpr6   s      r   test_int_valuesz&TestAssertPreciseEqual.test_int_valuesP   s    . 	; 	;B5 ; ;1rr!uu40001rr!uu400021D1111b5		22a2g;;T::::	;	; 	;r   c                 @   t          j        | j        | j                  D ]}\  }}|                      |d           |d                     |                      |d           |d                     |                      |d           |d                     ~d S )NTF)r"   r#   r'   r   r   )r   tpatpbs      r   test_bool_valuesz'TestAssertPreciseEqual.test_bool_valuesX   s    !)$/4?KK 	+ 	+HCGGCCIIss4yy)))GGCCJJE

+++GGCCIIss5zz****	+ 	+r   c                    |                      t                    5  |                     t          j        d          t          j        d          d           d d d            n# 1 swxY w Y   |                      t                    5  |                     t          j        d          t          j        d          t          d                     d d d            d S # 1 swxY w Y   d S )NFFg<invalid)abs_tolr   r8      )assertRaises
ValueErrorr   npfloat64int)r   s    r   test_abs_tol_parsez)TestAssertPreciseEqual.test_abs_tol_parse^   sb   z** 	M 	MGGBJu%%rz%'8'8)GLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Mz** 	B 	BGGBJqMM2:a==#a&&GAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs$   =A$$A(+A(	A
C  C$'C$c                    | j         D ]w}dD ]p}|                      |d           |d          |           |                      |d           |d          |           |                      |d           |d          |           |                      |d           |d          |           |                      |d           |d          |d           |                      |t                     |t                    |           |                      |t                     |d          |           |                      |t                      |t                     |           |                      |t                     |t                     |           |                      |t                     |t                    |           |                      |t                     |d	          |           |                      |t                     |t                    |           |                      |t                     |t                     |           ryd S )
Nr1   g      ?r5                  T)r6   ignore_sign_on_zerog*Gr   )r%   r   r   INFNANr:   s      r   test_float_valuesz(TestAssertPreciseEqual.test_float_valuese   sG   " 	6 	6B5 6 63Ct4443Ct4444""T((6663D5553D$OOO3Ct4443D555C4""cT((6663SD5553Ct4443AT2223Ct4443SD5555!6	6 	6r   c                     t           t          j        fD ]2}|                      |dt          z              |d                     3d S N      ?)floatrH   rI   r   DBL_EPSILONr   r;   s     r   test_float64_valuesz*TestAssertPreciseEqual.test_float64_valuesy   sP    "*% 	4 	4BGGBBs[())22c773333	4 	4r   c                 ~    t           j        }|                      |dt          z              |d                     d S rT   )rH   float32r   FLT_EPSILONrX   s     r   test_float32_valuesz*TestAssertPreciseEqual.test_float32_values}   s:    Z3$%%rr#ww/////r   c                    t           t          j        fD ]e}dD ]}|dz  }|dt          z   z  }|dt          dz  z   z  }|dt          dz  z   z  }|                      ||           ||                     |                      ||           ||          d           |                      ||           ||          d           |                      ||           ||          dd	           |                      ||           ||          d           |                      ||           ||          dd	           |                      ||           ||          dd	           |                      ||           ||          dd
	           |                      ||           ||          dd
	           |                      |d           |d          dd           |                      |d           |d          dd           |                      |d           |d          dd           |                      |d           |d          dd           gd S )NrU   ig      ?g      rU   r8      r2   r5   r4   r   r6   ulps   gؗҜ<gMg<epsr6   rD   gؗҼ<rB   gC]r2<gq7K<)rV   rH   rI   rW   r   r   r   r;   scaleabr,   ds          r   test_float64_values_inexactz2TestAssertPreciseEqual.test_float64_values_inexact   s   "*% 	H 	HB5 = =CKS;./S;?23S;?231rr!uu%%%1rr!uu73331rr!uu84441rr!uu8!<<<1rr!uu84441rr!uu8!<<<1rr!uu8!<<<1rr!uu8!<<<1rr!uu8!<<<<GGBBuIIrr%yyxGGGGGGBBuIIrr%yyxGGGGGGBBuIIrr%yyxGGGGGGBBuIIrr%yyxGGGGG)	H 	Hr   c                    t           j        }dD ]}|dz  }|dt          z   z  }|dt          dz  z   z  }|dt          dz  z   z  }|                      ||           ||                     |                      ||           ||          d           |                      ||           ||          d           |                      ||           ||          d           |                      ||           ||          d           |                      ||           ||          dd	           |                      ||           ||          dd	           |                      ||           ||          dd
	           |                      ||           ||          dd
	           |                      |d           |d          dd           |                      |d           |d          dd           |                      |d           |d          dd           |                      |d           |d          dd           d S )Nr_   rU   r8   r`   r2   r5   r4   r3   ra   rc   gHz>gH׊>rd   re   gv!>g:0yE>)rH   r[   r\   r   r   rf   s          r   test_float32_values_inexactz2TestAssertPreciseEqual.test_float32_values_inexact   su   Z1 	9 	9E A{*+A{Q./A{Q./AGGBBqEE22a55!!!GGBBqEE22a55wG///GGBBqEE22a55xG000GGBBqEE22a55xG000GGBBqEE22a55xG000GGBBqEE22a55xaG888GGBBqEE22a55xaG888GGBBqEE22a55xaG888GGBBqEE22a55xaG88884""T((5AAA4""T((5AAA4""T((4@@@4""T((4@@@@@r   c                    t          dd          t          dd          t          dd          t          dd          g\  }}}}| j        D ]t}dD ]}|                      |d           |d          |           |                      |d           |d          |           |                      |d           |d          |           |                      ||           ||          |           |                      ||           ||          |           |                      ||           ||          |           |                      ||           ||          |           |                      ||           ||          |           |                      |t          t          t                               |t          t          t                              |           |                      |t          t          t                                |t          t          t                               |           |                      |t          t           t                                |t          t           t                               |           |                      |t          t          t                               |t          t          t                               |           |                      |t          t          t                               |t          t           t                              |           |                      |t          t          d                     |t          t          d                    |           |                      |t          t
          d                     |t          t
          d                    |           |                      |t          dt
                               |t          dt
                              |           |                      |t          t
          t
                               |t          t
          t
                              |           |                      |t          t          t
                               |t          t          t
                              |           |                      |t          t
          t                                |t          t
          t                               |           |                      |t          t          d                     |t          t          d	                    d
           vd S )NrM   rN   r1   y      ?       @r5   y      ?      ?y       @       @r   r   r2   )complexr&   r   r   rP   rQ   )r   c_ppc_pnc_npc_nnr;   r6   s          r   test_complex_valuesz*TestAssertPreciseEqual.test_complex_values   s    #*#s"3"3WS$5G5G")$"4"4gdD6I6I"KdD$$ 	L 	LB5 S S6

BBvJJT:::6

BBvJJT:::6

BBvJJT:::4""T((6664""T((6664""T((6664""T((6664""T((66673,,--rr'#s2C2C/D/D4PPP73--..733E3E0F0FTRRR7C4#..//GSD3$4G4G1H1HtTTT73,,--rr'#t2D2D/E/EDQQQ73,,--rr'3$2D2D/E/EDQQQ73??++RRQ-@-@tLLL73??++RRQ-@-@tLLL71c??++RR3-@-@tLLL73,,--rr'#s2C2C/D/D4PPP73,,--rr'#s2C2C/D/D4PPP73--..733E3E0F0FTRRRR GGBBwsA''GCOO)<)<7GKKKK?	L 	Lr   c                    t           t          j        fD ]N}dD ]G}|dz  }|dt          z   z  }|dt          dz  z   z  } |t          ||                    } |t          ||                    } |t          ||                    }|                      ||           ||                     |                      ||           ||          d           |                      ||           ||          d           |                      ||           ||          d            |t          ||                    }	 |t          ||                    }
|                      ||           ||	          d           |                      ||	           ||
          d           |                      ||           ||	          dd           |                      ||	           ||
          dd           |                      ||           ||
          dd           |                      ||           ||
          d           IPd S )Nr_   rU   r8   r4   r5   ra   r3   )ro   rH   
complex128rW   r   r   r   r;   rg   rh   ri   r,   aaabbbacccs              r   test_complex128_values_inexactz5TestAssertPreciseEqual.test_complex128_values_inexact   si   BM* 	7 	7B5 7 7CKS;./S;?23R1&&R1&&R1&&22'''22X66622X66622X666R1&&R1&&22X66622X66622XA>>>22XA>>>22XA>>>22X6666%7	7 	7r   c                    t           j        }dD ]G}|dz  }|dt          z   z  }|dt          dz  z   z  } |t          ||                    } |t          ||                    } |t          ||                    }|                      ||           ||                     |                      ||           ||          d           |                      ||           ||          d           |                      ||           ||          d           |                      ||           ||          d            |t          ||                    }	 |t          ||                    }
|                      ||           ||	          d           |                      ||	           ||
          d           |                      ||           ||	          dd           |                      ||	           ||
          dd           |                      ||           ||
          dd           Id S )Nr_   rU   r8   r4   r5   r3   ra   )rH   	complex64r\   ro   r   r   rw   s              r   test_complex64_values_inexactz4TestAssertPreciseEqual.test_complex64_values_inexact   sU   \1 	; 	;EA{*+A{Q./AGAqMM""BGAqMM""BGAqMM""BGGBBrFFBBrFF###GGBBrFFBBrFFG222GGBBrFFBBrFFG222GGBBrFFBBrFFG222GGBBrFFBBrFFG222GAqMM""BGAqMM""BGGBBrFFBBrFFG222GGBBrFFBBrFFG222GGBBrFFBBrFFG:::GGBBrFFBBrFFG:::GGBBrFFBBrFFG::::%	; 	;r   c                    t           j        t           j        t           j        t          j        t          j        t          j        t          j
        t          j        g}|D ]3}|                     ||           |                     ||j                   4t          j        |d          D ]\  }}|                     ||           d S )Nr8   )ColorredgreenblueShakemintShapecirclesquarePlanetEARTHMERCURYr   r   valuer"   combinations)r   valuesvalrh   ri   s        r   
test_enumsz!TestAssertPreciseEqual.test_enums  s    )U[%*ej,flFNL 	$ 	$CGGCGGC####*6155 	 	DAqGGAqMMMM	 	r   c                    t          j        ddt           j                                      d          }|                                }|                     ||           |                     ||dz              |                     ||d d                    |                     ||j                   |                     ||                    t           j	                             |                     ||j                                        j                   |                     ||
                                           d|j        _        |                     ||           t          j        ddt           j                  }|dt          z   z  }|dt          d	z  z   z  }|                     ||           |                     ||d
           |                     ||d
           d S )Nr   rE   )dtype)r8   rc   r7   Frc   rU   r8   r4   r5   )rH   arangeint16reshapecopyr   r   Tastypeint32flattenflags	writeablerI   rW   )r   rh   ri   r,   s       r   test_arraysz"TestAssertPreciseEqual.test_arrays  s   Ia"(+++33F;;FFHH11q51SbS613188BH%%&&&1388::<   199;;!1Ia"*---{"#{Q&'118$$$18$$$$$r   c                 2   t          j        dd          }t          j        dd          }t          j        dd          }t          j        dd          }|                     ||           |                     ||           |                     ||           d S )N1900Yz
1900-01-01D1901)rH   
datetime64r   r   r   rh   ri   r,   rj   s        r   test_npdatetimez&TestAssertPreciseEqual.test_npdatetime%  s}    M&#&&M&#&&M,,,M&#&&111r   c                 2   t          j        dd          }t          j        dd          }t          j        dd          }t          j        dd          }|                     ||           |                     ||           |                     ||           d S )Nr   h<   mr8   )rH   timedelta64r   r   r   s        r   test_nptimedeltaz'TestAssertPreciseEqual.test_nptimedelta0  s}    N1c""N1c""N2s##N1c""111r   N)&__name__
__module____qualname____doc__rJ   r$   rH   r[   rI   r(   rV   r%   r   rv   r)   ro   r&   boolbool_r'   r   r   r/   r<   r@   rK   rR   rY   r]   rk   rm   rt   r}   r   r   r   r   r   r   r   r   r   r      s         Ij"*-N'N*Kbm4I 00M!J5 5 52 2 2$ $ $6; ; ;+ + +B B B6 6 6(4 4 40 0 0H H H.A A A2$L $L $LL7 7 7,; ; ;,  % % %2	 	 		 	 	 	 	r   r   c                       e Zd Zd Zd ZdS )TestMiscc                    d}d}g }|                      ||          5  	 d d d            n# 1 swxY w Y   |                     t                    5 }|                      ||          5  |                    |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Ng     K@g     P@66)assertRefCountrF   r   appendassertInstr	exception)r   xylcms        r   test_assertRefCountzTestMisc.test_assertRefCount>  s     A&& 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	~.. 	"$$Q**                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	dC--.....sB   +//B 'B	=B 	B	B B	B  B$'B$c                 R   d }t                      5  |                     t                    5 } t          d          |          } |             ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   |                     dt          |j                             dS )zg
        Test that forbid_codegen() prevents code generation using the @jit
        decorator.
        c                      dS r!   r   r   r   r   r+   z'TestMisc.test_forbid_codegen.<locals>.fP  s    1r   T)nopythonNzcodegen forbidden by test case)r   rF   RuntimeErrorr   r   r   r   )r   r+   raisescfuncs       r   test_forbid_codegenzTestMisc.test_forbid_codegenK  s%   
	 	 	 	 	""<00 F*T***1--              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	6F<L8M8MNNNNNs4   A4$AA4A!	!A4$A!	%A44A8;A8N)r   r   r   r   r   r   r   r   r   r   <  s7        / / /O O O O Or   r   __main__)r"   numpyrH   numbar   
numba.corer   numba.tests.supportr   r   enum_usecasesunittestrW   r\   rV   rP   rQ   r   r   r   mainr   r   r   <module>r      s                       8 8 8 8 8 8 8 8     eElleEllg g g g gX g g gT	O O O O Ox O O O: zHMOOOOO r   