o
    8ήca                     @   sp   d dl Z d dlZd dlZd dlmZmZmZ d dlm	Z
 d dlmZmZ G dd deZedkr6e   dS dS )    N)njitjitliteral_unroll)event)TestCaseoverride_configc                   @   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S )	TestEventc                 C   s   t dd   ttj| _d S )Nc                   S   s   d S N r
   r
   r
   =/tmp/pip-target-vg8gfxp4/lib/python/numba/tests/test_event.py<lambda>   s    z!TestEvent.setUp.<locals>.<lambda>)r   lenev_registered _TestEvent__registered_listenersselfr
   r
   r   setUp   s   zTestEvent.setUpc                 C   s   |  ttj| j d S r	   )assertEqualr   r   r   r   r   r
   r
   r   tearDown   s   zTestEvent.tearDownc                 C   sb   t dd }td}|d W d    n1 sw   Y  | |tj | t|jd d S )Nc                 S      | |  S r	   r
   xr
   r
   r   foo      z.TestEvent.test_recording_listener.<locals>.foonumba:compile      )r   r   install_recorderassertIsInstanceRecordingListenerassertGreaterEqualr   buffer)r   r   recr
   r
   r   test_recording_listener   s   

z!TestEvent.test_recording_listenerc                 C   L   t dd }|d ||jd }|d d }| |t | |d d S )Nc                 S   r   r	   r
   r   r
   r
   r   r   $   r   z/TestEvent.test_compiler_lock_event.<locals>.foor   r   timerscompiler_lockr   get_metadata
signaturesr   floatassertGreaterr   r   mdlock_durationr
   r
   r   test_compiler_lock_event#      
z"TestEvent.test_compiler_lock_eventc                 C   r%   )Nc                 S   r   r	   r
   r   r
   r
   r   r   /   r   z+TestEvent.test_llvm_lock_event.<locals>.foor   r   r&   	llvm_lockr(   r-   r
   r
   r   test_llvm_lock_event.   r1   zTestEvent.test_llvm_lock_eventc                 C   s   t dd }td}|d W d    n1 sw   Y  | t|jd |jD ]7\}}|j}| |d t | |d t | |d t | |d	 t | |d
 t | |d t q+d S )Nc                 S   r   r	   r
   r   r
   r
   r   r   :   r   z*TestEvent.test_run_pass_event.<locals>.fooznumba:run_passr   r   namequalnamemoduleflagsargsreturn_type)	r   r   r   r,   r   r"   datar   str)r   r   recorder_r   r:   r
   r
   r   test_run_pass_event9   s   

zTestEvent.test_run_pass_eventc                    sr   | G  fdddt j}tdd  | }t d|} d W d    n1 s,w   Y  | || d S )Nc                       (   e Zd Z fddZ fddZdS )z3TestEvent.test_install_listener.<locals>.MyListenerc                    s`    |jtjj  |jd |jd   |jd }|  |jd |j	 d S Nr   
dispatcherr8   )
r   statusr   EventStatusSTARTkindassertIsr:   assertNotIn	overloadsr   r   rA   r   utr
   r   on_startP   s   
z<TestEvent.test_install_listener.<locals>.MyListener.on_startc                    N    |jtjj  |jd |jd }|  |jd |j	 d S r@   
r   rB   r   rC   ENDrE   r:   rF   assertInrH   rI   rJ   r
   r   on_endY   s
   
z:TestEvent.test_install_listener.<locals>.MyListener.on_endN__name__
__module____qualname__rL   rQ   r
   rJ   r
   r   
MyListenerO       	rV   c                 S      | S r	   r
   r   r
   r
   r   r   a      z,TestEvent.test_install_listener.<locals>.foor   r   )r   Listenerr   install_listenerrF   )r   rV   listeneryieldedr
   rJ   r   test_install_listenerL   s   

zTestEvent.test_install_listenerc                    sR   | G  fdddt j}tdd  | }t d|  d t d| d S )Nc                       r?   )z2TestEvent.test_global_register.<locals>.MyListenerc                    rM   r@   )
r   rB   r   rC   rD   rE   r:   rF   rG   rH   rI   rJ   r
   r   rL   p   
   
z;TestEvent.test_global_register.<locals>.MyListener.on_startc                    rM   r@   rN   rI   rJ   r
   r   rQ   y   r_   z9TestEvent.test_global_register.<locals>.MyListener.on_endNrR   r
   rJ   r
   r   rV   o   rW   rV   c                 S   rX   r	   r
   r   r
   r
   r   r      rY   z+TestEvent.test_global_register.<locals>.foor   r   )r   rZ   r   register
unregister)r   rV   r\   r
   rJ   r   test_global_registerl   s   
zTestEvent.test_global_registerc                 C   s   t dd }td}|  W d    n1 sw   Y  | t|jd |j|jd  }|j\}|j|jd  }| 	|j
d d t | 	|j
d d t d S )	Nc                  S   s$   t   d} tdD ]}| |7 } q	| S )Nr   
   )objectrange)cir
   r
   r   r      s
   
z-TestEvent.test_lifted_dispatcher.<locals>.foor      r   r&   r'   r2   )r   r   r   r!   r   r"   rH   r*   liftedr   metadatar+   )r   r   r#   cresldisplifted_cresr
   r
   r   test_lifted_dispatcher   s"   
z TestEvent.test_lifted_dispatcherc                    s  t tj t fddtfdd}tdd |d W d    n1 s)w   Y  dd	 }||d
}|d
}||d}|d}| |d |d  | |d |d  | | |d  | | |d  | |d |d  | |d |d  d S )Nc                    sH   d}t  D ]}|d| iv r|d7 }q|t| d 7 }qt| |fS )Nr   1r   )r   r   )r   npsqrtsin)r   accrg   )ar
   r   bar   s   
z-TestEvent.test_timing_properties.<locals>.barc                    s    t | | fS r	   )rp   zerosr   )ru   r
   r   r      s   z-TestEvent.test_timing_properties.<locals>.fooLLVM_PASS_TIMINGSTr   c                 S   s   |  | jd }|| S )Nr   )r)   r*   )fnpropr.   r
   r
   r   
get_timers   s   z4TestEvent.test_timing_properties.<locals>.get_timersr&   llvm_pass_timingsr2   r'   )tuplestringascii_lowercaser   r   
assertLessget_total_time)r   r   rz   
foo_timers
bar_timersfoo_llvm_timerbar_llvm_timerr
   )rt   ru   r   test_timing_properties   s>   
	










z TestEvent.test_timing_propertiesN)rS   rT   rU   r   r   r$   r0   r3   r>   r^   rb   rn   r   r
   r
   r
   r   r      s     r   __main__)unittestr}   numpyrp   numbar   r   r   
numba.corer   r   numba.tests.supportr   r   r   rS   mainr
   r
   r
   r   <module>   s     N