B
     \                 @   s  d dl mZmZmZ d dlZd dlmZ d dlmZ	 d dl
mZ edZdd Zejdejd	Zejdejd	Zeed d
 7 Zdd ZedejfdejfgZejded	Zx,eeeD ]Zeee _ed ee _qW dd Zdd Zedej fdej!fgZ"ejde"d	Z#x2eee#D ]"Zed e#e _$ed e#e _%q&W dd Z&ejded	d  Z'de'_de'_edddd Z(edddd  Z)G d!d" d"e	j*Z+e,d#kre	-  dS )$    )print_functiondivisionabsolute_importN)jit)unittest_support)usecases
   c             C   s   | t jd  }|S )Nr   )Xshape)xy r   7lib/python3.7/site-packages/numba/tests/test_globals.pyglobal_ndarray_func
   s    r   )dtypey              ?c             C   s&   x t t| D ]}t| | |< qW d S )N)rangelencplx_X)air   r   r   global_cplx_arr_copy   s    r   r   bg      ?c             C   s&   x t t| D ]}t| | |< qW d S )N)r   r   rec_X)r   r   r   r   r   global_rec_arr_copy"   s    r   c             C   s6   x0t t| D ] }t| j| |< t| j||< qW d S )N)r   r   r   r   r   )r   r   r   r   r   r   global_rec_arr_extract_fields'   s    r   cdg      %@c             C   sR   xLt t| D ]<}t| j| |< t| j||< t| j||< t| j||< qW d S )N)r   r   r   r   r   rec_Yr   r   )r   r   r   r   r   r   r   r   global_two_rec_arrs5   s
    r      g      ?T)nopythonc             C   s   | j tj kS )N)r   record_only_X)r   r   r   r   global_record_funcB   s    r"   c             C   s   t | |S )N)r   Zandornopython)r   r   r   r   r   global_module_funcG   s    r#   c               @   s   e Z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 )$TestGlobalsc             K   s"   t f |t}| |dd d S )Nr      )r   r   assertEqual)selfjitargs	ctestfuncr   r   r   check_global_ndarrayN   s    z TestGlobals.check_global_ndarrayc             C   s   | j dd d S )NT)forceobj)r*   )r'   r   r   r   test_global_ndarrayS   s    zTestGlobals.test_global_ndarrayc             C   s   | j dd d S )NT)r    )r*   )r'   r   r   r   test_global_ndarray_npmX   s    z#TestGlobals.test_global_ndarray_npmc             K   s<   t f |t}tjtttjd}|| tj|t d S )N)r   )	r   r   npzerosr   r   
complex128testingassert_equal)r'   r(   r)   arrr   r   r   check_global_complex_arr\   s    z$TestGlobals.check_global_complex_arrc             C   s   | j dd d S )NT)r+   )r4   )r'   r   r   r   test_global_complex_arrc   s    z#TestGlobals.test_global_complex_arrc             C   s   | j dd d S )NT)r    )r4   )r'   r   r   r   test_global_complex_arr_npmf   s    z'TestGlobals.test_global_complex_arr_npmc             K   s8   t f |t}tjtjtd}|| tj|t d S )N)r   )	r   r   r.   r/   r   r
   x_dtr1   r2   )r'   r(   r)   r3   r   r   r   check_global_rec_arrj   s    z TestGlobals.check_global_rec_arrc             C   s   | j dd d S )NT)r+   )r8   )r'   r   r   r   test_global_rec_arrq   s    zTestGlobals.test_global_rec_arrc             C   s   | j dd d S )NT)r    )r8   )r'   r   r   r   test_global_rec_arr_npmt   s    z#TestGlobals.test_global_rec_arr_npmc             K   s`   t f |t}tjtjtjd}tjtjtjd}||| tj	|tj
 tj	|tj d S )N)r   )r   r   r.   r/   r   r
   int32float32r1   r2   r   r   )r'   r(   r)   arr1arr2r   r   r   check_global_rec_arr_extractx   s    
z(TestGlobals.check_global_rec_arr_extractc             C   s   | j dd d S )NT)r+   )r?   )r'   r   r   r   test_global_rec_arr_extract   s    z'TestGlobals.test_global_rec_arr_extractc             C   s   | j dd d S )NT)r    )r?   )r'   r   r   r   test_global_rec_arr_extract_npm   s    z+TestGlobals.test_global_rec_arr_extract_npmc             K   s   t f |t}tjtjtjd}tjtjtjd}tjtjtj	d}tjtjtj
d}||||| tj|tj tj|tj tj|tj tj|tj d S )N)r   )r   r   r.   r/   r   r
   r;   r<   r   int16float64r1   r2   r   r   r   r   )r'   r(   r)   r=   r>   Zarr3Zarr4r   r   r   check_two_global_rec_arrs   s    z%TestGlobals.check_two_global_rec_arrsc             C   s   | j dd d S )NT)r+   )rD   )r'   r   r   r   test_two_global_rec_arrs   s    z$TestGlobals.test_two_global_rec_arrsc             C   s   | j dd d S )NT)r    )rD   )r'   r   r   r   test_two_global_rec_arrs_npm   s    z(TestGlobals.test_two_global_rec_arrs_npmc             C   s   t dd}| d| d S )N      T)r#   r&   )r'   resr   r   r   test_global_module   s    
zTestGlobals.test_global_modulec             C   sJ   t jdtdd }d|_t|}| d| d|_t|}| d| d S )Nr   )r   r   T   F)r.   recarrayr7   r   r"   r&   )r'   r   rI   r   r   r   test_global_record   s    zTestGlobals.test_global_recordN)__name__
__module____qualname__r*   r,   r-   r4   r5   r6   r8   r9   r:   r?   r@   rA   rD   rE   rF   rJ   rM   r   r   r   r   r$   L   s"   	r$   __main__).Z
__future__r   r   r   Znumpyr.   Znumbar   r   ZunittestZnumba.testsr   Zaranger	   r   r0   r   Ztmpr   r   r;   r<   r7   rL   r   r   r   r   r   r   r   r   rB   rC   Zy_dtr   r   r   r   r!   r"   r#   ZTestCaser$   rN   mainr   r   r   r   <module>   s>   

	^
