o
    1&i                     @   s|   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 d dlmZ G dd deZedkr<e   dS dS )	    N)njitjitliteral_unroll)event)TestCaseoverride_config)_lazy_pformatc                   @   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   AC:\wamp64\www\opt\env\Lib\site-packages\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assertIsInstanceZ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   mdZ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   0   r   z+TestEvent.test_llvm_lock_event.<locals>.foor   r   r&   	llvm_lockr(   r-   r   r   r   test_llvm_lock_event/   r0   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    strr   )r   r   Zrecorder_r   r9   r   r   r   test_run_pass_event:   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   
dispatcherr7   )
r   statusr   EventStatusSTARTkindassertIsr9   assertNotIn	overloadsr   r   r?   r   utr   r   on_startQ   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   r@   r   rA   ZENDrC   r9   rD   ZassertInrF   rG   rH   r   r   on_endZ   s
   
z:TestEvent.test_install_listener.<locals>.MyListener.on_endN__name__
__module____qualname__rJ   rM   r   rH   r   r   
MyListenerP       	rR   c                 S      | S r
   r   r   r   r   r   r   b      z,TestEvent.test_install_listener.<locals>.foor   r   )r   Listenerr   Zinstall_listenerrD   )r   rR   listeneryieldedr   rH   r   test_install_listenerM   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                    rK   r>   )
r   r@   r   rA   rB   rC   r9   rD   rE   rF   rG   rH   r   r   rJ   q   
   
z;TestEvent.test_global_register.<locals>.MyListener.on_startc                    rK   r>   rL   rG   rH   r   r   rM   z   rZ   z9TestEvent.test_global_register.<locals>.MyListener.on_endNrN   r   rH   r   r   rR   p   rS   rR   c                 S   rT   r
   r   r   r   r   r   r      rU   z+TestEvent.test_global_register.<locals>.foor   r   )r   rV   r   register
unregister)r   rR   rW   r   rH   r   test_global_registerm   s   
zTestEvent.test_global_registerc                 C   s   t dd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 )NT)Zforceobjc                  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'   r1   )r   r   r   r!   r   r"   rF   r*   Zliftedr    metadatar+   )r   r   r#   ZcresZldispZ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   accrb   )ar   r   bar   s   
z-TestEvent.test_timing_properties.<locals>.barc                    s    t | | fS r
   )rg   Zzerosr   )rl   r   r   r      s   z-TestEvent.test_timing_properties.<locals>.fooZ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&   Zllvm_pass_timingsr1   r'   )tuplestringascii_lowercaser   r   Z
assertLessZget_total_time)r   r   ro   Z
foo_timersZ
bar_timersZfoo_llvm_timerZbar_llvm_timerr   )rk   rl   r   test_timing_properties   s>   
	










z TestEvent.test_timing_propertiesN)rO   rP   rQ   r   r   r$   r/   r2   r<   rY   r]   re   rs   r   r   r   r   r	      s     r	   __main__)Zunittestrq   numpyrg   Znumbar   r   r   Z
numba.corer   r   Znumba.tests.supportr   r   Znumba.core.utilsr   r	   rO   mainr   r   r   r   <module>   s     N