U
    ‰ª/eó  ã                   @   sF   d dl Z d dlmZ d dlmZ G dd„ de jƒZedkrBe  ¡  dS )é    N)Úflaky)ÚInProcessKernelManagerc                   @   sH   e Zd Zdd„ Zdd„ Zedd„ ƒZdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )ÚInProcessKernelManagerTestCasec                 C   s   t ƒ | _d S ©N)r   Úkm©Úself© r	   úP/tmp/pip-unpacked-wheel-g43y689f/ipykernel/inprocess/tests/test_kernelmanager.pyÚsetUp   s    z$InProcessKernelManagerTestCase.setUpc                 C   s   | j jr| j  ¡  d S r   )r   Ú
has_kernelÚshutdown_kernelr   r	   r	   r
   ÚtearDown   s    z'InProcessKernelManagerTestCase.tearDownc                 C   sÂ   | j }|jrt‚| ¡  |js"t‚|jdk	s0t‚| ¡ }|jrBt‚| ¡  |jsTt‚|j}| ¡  |  	|j¡ |j|ks|t‚| 
¡  |jrŽt‚|  t|j¡ |  t|jd¡ | ¡  |jr¾t‚dS )zDDoes the in-process kernel manager implement the basic KM interface?Né	   )r   r   ÚAssertionErrorÚstart_kernelÚkernelÚclientZchannels_runningÚstart_channelsZrestart_kernelZassertIsNotNoner   ÚassertRaisesÚNotImplementedErrorZinterrupt_kernelZsignal_kernelZstop_channels)r   r   ÚkcZ
old_kernelr	   r	   r
   Útest_interface   s&    




z-InProcessKernelManagerTestCase.test_interfacec                 C   sJ   | j }| ¡  | ¡ }| ¡  | ¡  | d¡ |jjjd dksFt	‚dS )z1Does executing code in an in-process kernel work?zfoo = 1Úfooé   N)
r   r   r   r   Úwait_for_readyÚexecuter   ÚshellÚuser_nsr   )r   r   r   r	   r	   r
   Útest_execute5   s    
z+InProcessKernelManagerTestCase.test_executec                 C   s‚   | j }| ¡  | ¡ }| ¡  | ¡  |jj dddœ¡ | dd¡ | 	¡ }|d d dksbt
‚|  t|d	 d
 ƒddg¡ dS )z:Does requesting completion from an in-process kernel work?r   r   )Úmy_barÚmy_bazZmy_baé   ÚheaderÚmsg_typeZcomplete_replyÚcontentÚmatchesr    r!   N)r   r   r   r   r   r   r   ÚpushZcompleteÚget_shell_msgr   ÚassertEqualÚsorted)r   r   r   Úmsgr	   r	   r
   Útest_complete?   s    z,InProcessKernelManagerTestCase.test_completec                 C   sŠ   | j }| ¡  | ¡ }| ¡  | ¡  d|jjjd< | d¡ | 	¡ }|d d dksZt
‚|d }|d snt
‚|d d	 }|  d
|¡ dS )zBDoes requesting object information from an in-process kernel work?r   r   r#   r$   Zinspect_replyr%   ÚfoundÚdataz
text/plainÚintN)r   r   r   r   r   r   r   r   Úinspectr(   r   ZassertIn)r   r   r   r+   r%   Útextr	   r	   r
   Útest_inspectL   s    
z+InProcessKernelManagerTestCase.test_inspectc                 C   s”   | j }| ¡  | ¡ }| ¡  | ¡  | d¡ |jddd |j ¡ d }|d d dks`t	‚|d	 d
 }t
|ƒdks|t	‚|d d dkst	‚dS )z7Does requesting history from an in-process kernel work?Ú1Útailr   )Zhist_access_typeÚnéÿÿÿÿr#   r$   Zhistory_replyr%   Úhistoryr   é   N)r   r   r   r   r   r   r7   Zshell_channelZget_msgsr   Úlen)r   r   r   r+   r7   r	   r	   r
   Útest_history\   s    
z+InProcessKernelManagerTestCase.test_historyN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r,   r2   r:   r	   r	   r	   r
   r      s   

r   Ú__main__)Zunittestr   Zipykernel.inprocess.managerr   ZTestCaser   r;   Úmainr	   r	   r	   r
   Ú<module>   s
   ]