U
    /e4                     @   sl   d dl Zd dlZd dlmZmZ d dlmZ d dlm	Z	 e	ddddZ
e	dddd	Zedd
ddZdS )    N)CommCommManager)IPythonKernel)Kernel)kernelreturnc              	      s   t | d}|| _t  t| dd}W 5 Q R X g  | |jksBt fdd} fdd}|d |i  |	| |
| |i  |i  |  t d	kst|jdkstd S )
Nr   bar)r   target_namec                    s     |  d S NappendmsgZmsgs =/tmp/pip-unpacked-wheel-g43y689f/ipykernel/tests/test_comm.pyon_close   s    ztest_comm.<locals>.on_closec                    s     |  d S r   r   r   r   r   r   
on_message   s    ztest_comm.<locals>.on_messagefoo   )r   comm_managerpytestdeprecated_callr   r   AssertionErrorpublish_msgopenon_msgr   Z
handle_msgZhandle_closecloselenr
   )r   managercr   r   r   r   r   	test_comm
   s"    







r"   c           	   
      sp  t | d}g   fdd}dd } fdd} fdd	}|d
| |d| || _tjjtdL}t	  t }W 5 Q R X |
| || || |jdkstW 5 Q R X | t_|j| kstt  ||j|kst|d
d ksttt|jd
dd}|d d | t dks0td|d d< |d d | t dks\ttt|jddd}|d d | t dkst|| ||j|ksttt|jdd}|d d | t dkstd
|d d< |d d | t dkst|| ||j|ks.ttt|jdd}|d d | t dks`t|jsltd S )Nr   c                    s     | |   d S r   )r   r   commr   r   r   r   r   )   s    
ztest_comm_manager.<locals>.fooc                 S   s   t dd S )Nhi)RuntimeErrorr#   r   r   r   fizz-   s    ztest_comm_manager.<locals>.fizzc                    s     |  d S r   r   r   r   r   r   r   0   s    z#test_comm_manager.<locals>.on_closec                    s     |  d S r   r   r   r   r   r   r   3   s    z!test_comm_manager.<locals>.on_msgr   r'   r      )comm_idr
   )contentr	   r*   r
   )r)   r   r)      )r   Zregister_targetr   unittestZmockpatchobjectr   r   r   r   r   Zregister_commZ
call_countr   r   Z	_instancer   Zclear_instanceZget_commr)   dictZ	comm_openr   Zcomm_msgZ
comm_close_closed)	r   r    r   r'   r   r   r   r$   r   r   r   r   test_comm_manager%   sX    






r1   )ipkernelr   c              	   C   s0   t   t }W 5 Q R X |j| jjks,td S r   )r   r   r   r)   r   Zcommsr   )r2   r$   r   r   r   test_comm_in_managerf   s    
r3   )Zunittest.mockr,   r   Zipykernel.commr   r   Zipykernel.ipkernelr   Zipykernel.kernelbaser   r"   r1   r3   r   r   r   r   <module>   s   A