B � f�@s�dZddlmZddlmZddlZddlmZddlmZddl m Z ddl Z ddl Z ddlmZdd lmZGd d �d ej�Ze Zd \ZZe�ed dged�Ze�edd�Ze�edddg�Ze�edd�Ze�edd�Ze�eded�Z e�e dd�Z!e�e!dd�Z"e�e dd �Z#ee d!�Z$e�%e$d"�e�%ej&�Gd#d$�d$ej�Z'Gd%d&�d&ej�Z(Gd'd(�d(ej�Z)Gd)d*�d*ej�Z*e+d+k�r�ej,d,d-�dS).zTest browser, coverage 90%.�)�browser)�requiresN)�mock)�Func)�deque)�Tk)�TreeNodec@sDeZdZedd��Zedd��Zdd�Zdd�Zd d �Zd d �Z d S)�ModuleBrowserTestcCs2td�t�|_|j��tj|jtdd�|_dS)NZguiT)Z_utest)rr�rootZwithdrawrZ ModuleBrowser�__file__�mb)�cls�r�C/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_browser.py� setUpClasss zModuleBrowserTest.setUpClasscCs*|j��|j��|j��|`|`dS)N)r �closer Zupdate_idletasks�destroy)r rrr� tearDownClasss   zModuleBrowserTest.tearDownClasscCsB|j}|j}||jt�|tji�|�|jt�|� t j �dS)N) r � assertEqual�pathr �pyclbrZ_modules�assertIsInstance�noderZassertIsNotNonerZ file_open)�selfr �eqrrr� test_init!s   zModuleBrowserTest.test_initcCs6|j}|�tj�t�|j���|�|j� �d�dS)NzModule Browser) r �assertIn�osr�basenamer �top�titlerZiconname)rr rrr� test_settitle)szModuleBrowserTest.test_settitlecCs |j}|��}|�|tj�dS)N)r Zrootnoderr�ModuleBrowserTreeItem)rr Zrnrrr� test_rootnode.szModuleBrowserTest.test_rootnodecCsR|j}t�|j_t�|j_|��|�|jjj�|�|jjj�|j`|j`dS)N)r rrrrr� assertTrueZcalled)rr rrr� test_close3s  zModuleBrowserTest.test_closeN) �__name__� __module__� __qualname__� classmethodrrrr!r#r%rrrrr s   r )�testztest.py�C0�base��F1��C1���C2��F3� �f0� �f1� �f2� �c1�)r+r7r*c@seZdZdd�Zdd�ZdS)�TransformChildrenTestcCs�|j}tj}t|td��}||ttg�||djd�||djd�t|td��}||djd�t|td��}||g�dS)Nr*rzC0(base)r-r7zdifferent name)rr�transform_children�list�mock_pyclbr_treer+r7�name)rr� transform�tclrrr�test_transform_module_childrenUsz4TransformChildrenTest.test_transform_module_childrencCs�|j}tj}t|tj��}||ttg�||djd�||djd�t|tj��}||djd�|t|t j��t t g�dS)Nrr.r-zC1()) rrr@rAr+�childrenr.r0rCr7r9r=)rrrDrErrr�test_transform_node_childrendsz2TransformChildrenTest.test_transform_node_childrenN)r&r'r(rFrHrrrrr?Ssr?c@sZeZdZedd��Zdd�Zdd�Zdd�Zd d �Zd d �Z d d�Z e � d�dd��Z dS)�ModuleBrowserTreeItemTestcCst�t�|_dS)N)rr"�fname�mbt)r rrrrtsz$ModuleBrowserTreeItemTest.setUpClasscCs|�|jjt�dS)N)rrK�filerJ)rrrrrxsz#ModuleBrowserTreeItemTest.test_initcCs|�|j��t�dS)N)rrK�GetTextrJ)rrrr� test_gettext{sz&ModuleBrowserTreeItemTest.test_gettextcCs|�|j��d�dS)N�python)rrK� GetIconName)rrrr�test_geticonname~sz*ModuleBrowserTreeItemTest.test_geticonnamecCs|�|j���dS)N)r$rK� IsExpandable)rrrr�test_isexpandable�sz+ModuleBrowserTreeItemTest.test_isexpandablecCs\tjj}tj}ttd�tj_tttgd�t_z|�|j � �ttg�Wd|tj_|t_XdS)N)�result) rrZ readmodule_exr@rrBr7r+rrK� listchildren)rZsave_rexZsave_tcrrr�test_listchildren�sz+ModuleBrowserTreeItemTest.test_listchildrencCsb|j}tttgd�|_|��\}}|`|�|tj�|�|tj�|� |j d�|� |j d�dS)N)rTr7zC0(base)) rKrr7r+rU� GetSubListrr�ChildBrowserTreeItemrrC)rrKZsub0Zsub1rrr�test_getsublist�s z)ModuleBrowserTreeItemTest.test_getsublistzidlelib.browser.file_openc Csh|j}tjddd��|��|��WdQRXtjddd�� |��|��|�t�WdQRXdS)Nzos.path.existsF)� return_valueT)rKr�patch� OnDoubleClickZassert_not_called� assert_calledZ called_withrJ)r�fopenrKrrr�test_ondoubleclick�sz,ModuleBrowserTreeItemTest.test_ondoubleclickN)r&r'r(r)rrrNrQrSrVrYrr[r_rrrrrIrs   rIc@s^eZdZedd��Zedd��Zdd�Zdd�Zd d �Zd d �Z d d�Z e � d�dd��Z dS)�ChildBrowserTreeItemTestcCs(tj}|t�|_|t�|_|t�|_dS)N)rrXr9�cbt_f1r0�cbt_C1r.�cbt_F1)r �CBTrrrr�s  z#ChildBrowserTreeItemTest.setUpClasscCs|`|`|`dS)N)rbrarc)r rrrr�sz&ChildBrowserTreeItemTest.tearDownClasscCsB|j}||jjd�|�|jj�||jjd�|�|jj�dS)NzC1()r9)rrbrC� assertFalseZ isfunctionrar$)rrrrrr�s z"ChildBrowserTreeItemTest.test_initcCs(|�|j��d�|�|j��d�dS)Nz class C1()z def f1(...))rrbrMra)rrrrrN�sz%ChildBrowserTreeItemTest.test_gettextcCs(|�|j��d�|�|j��d�dS)N�folderrO)rrbrPra)rrrrrQ�sz)ChildBrowserTreeItemTest.test_geticonnamecCs4|�|j���|�|j���|�|j���dS)N)r$rbrRrarerc)rrrrrS�sz*ChildBrowserTreeItemTest.test_isexpandablecCsX|j}tj}|j��}|�|d|�|t|�d�||djd�||j��g�dS)Nrr-r;) rrrXrarWr�lenrCrc)rrrdZ f1sublistrrrrY�s z(ChildBrowserTreeItemTest.test_getsublistzidlelib.browser.file_opencCs>t��}|j_|j��|��|��|�|jjj �dS)N) rZMockrZZgotolinercr\r]Zassert_called_with�obj�lineno)rr^Zgotorrrr_�s  z+ChildBrowserTreeItemTest.test_ondoubleclickN)r&r'r(r)rrrrNrQrSrYrr[r_rrrrr`�s   r`c@seZdZdZdd�ZdS)�NestedChildrenTestzFTest that all the nodes in a nested tree are added to the BrowserTree.c Cs�t�}g}ddddddddd g }tj}|�|t�|t�f�xd|r�|��}|��}|�|�|�|j |� ��|�|� �d �|� |� �|gk�|�|j �q>W|�||�dS) Nr7zC0(base)r9r=r.zC1()r;r3r5)rOrf)rrrX�extendr7r+�popleftrWrrCrMrPZassertIsrR�appendr)rZqueueZ actual_namesZexpected_namesrd�cbZsublistrrr� test_nested�s" zNestedChildrenTest.test_nestedN)r&r'r(�__doc__rorrrrrj�srj�__main__�)� verbosity)-rpZidlelibrZ test.supportrZunittestrZidlelib.idle_test.mock_idler� collectionsrZos.pathrrZtkinterrZ idlelib.treerZTestCaser r �modulerJZClassr+Z_nest_functionr.Z _nest_classr0r3r5ZFunctionr7r9r;r=rBr@rGr?rIr`rjr&�mainrrrr�s>       -   56