B
    v9a  ã               @   sœ  d Z ddlmZ ddlmZ ddlZddlmZ ddlmZ ddl	m
Z
 ddlZddlZddlmZ dd	lmZ G d
d„ dejƒZeZd\ZZe eddged¡Ze edd¡Ze edddg¡Ze edd¡Ze edd¡Ze eded¡Z e e dd¡Z!e e!dd¡Z"e e dd ¡Z#ee d!œZ$e %e$d"¡ e %ej&¡ G d#d$„ d$ejƒZ'G d%d&„ d&ejƒZ(G d'd(„ d(ejƒZ)G d)d*„ d*ejƒZ*e+d+kr˜ej,d,d- dS ).zTest browser, coverage 90%.é    )Úbrowser)ÚrequiresN)Úmock)ÚFunc)Údeque)ÚTk)ÚTreeNodec               @   sD   e Zd Zedd„ ƒZedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dS )ÚModuleBrowserTestc             C   s2   t dƒ tƒ | _| j ¡  tj| jtdd| _d S )NZguiT)Z_utest)r   r   ÚrootZwithdrawr   ZModuleBrowserÚ__file__Úmb)Úcls© r   ú"/usr/lib/python3.7/test_browser.pyÚ
setUpClass   s    
zModuleBrowserTest.setUpClassc             C   s*   | j  ¡  | j ¡  | j ¡  | `| ` d S )N)r   Úcloser
   Zupdate_idletasksÚdestroy)r   r   r   r   ÚtearDownClass   s    


zModuleBrowserTest.tearDownClassc             C   sB   | j }| j}||jtƒ |tji ƒ |  |jt¡ |  	t
j¡ d S )N)r   ÚassertEqualÚpathr   ÚpyclbrZ_modulesÚassertIsInstanceÚnoder   ZassertIsNotNoner   Z	file_open)Úselfr   Úeqr   r   r   Ú	test_init!   s    zModuleBrowserTest.test_initc             C   s6   | j }|  tj t¡|j ¡ ¡ |  |j 	¡ d¡ d S )NzModule Browser)
r   ÚassertInÚosr   Úbasenamer   ÚtopÚtitler   Ziconname)r   r   r   r   r   Útest_settitle)   s    zModuleBrowserTest.test_settitlec             C   s    | j }| ¡ }|  |tj¡ d S )N)r   Zrootnoder   r   ÚModuleBrowserTreeItem)r   r   Zrnr   r   r   Útest_rootnode.   s    zModuleBrowserTest.test_rootnodec             C   sR   | j }tƒ |j_tƒ |j_| ¡  |  |jjj¡ |  |jjj¡ |j`|j`d S )N)r   r   r   r   r   r   Ú
assertTrueZcalled)r   r   r   r   r   Ú
test_close3   s    

zModuleBrowserTest.test_closeN)
Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r   r!   r#   r%   r   r   r   r   r	      s   r	   )Útestztest.pyÚC0Úbaseé   ÚF1é   ÚC1é   Ú ÚC2é   ÚF3é	   Úf0é   Úf1é   Úf2é   Úc1é   )r+   r7   r*   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚTransformChildrenTestc             C   s‚   | j }tj}t|tdƒƒ}||ttgƒ ||d jdƒ ||d jdƒ t|tdƒƒ}||d jdƒ t|tdƒƒ}||g ƒ d S )Nr*   r   zC0(base)r-   r7   zdifferent name)r   r   Útransform_childrenÚlistÚmock_pyclbr_treer+   r7   Úname)r   r   Ú	transformÚtclr   r   r   Útest_transform_module_childrenU   s    z4TransformChildrenTest.test_transform_module_childrenc             C   s‚   | j }tj}t|tjƒƒ}||ttgƒ ||d jdƒ ||d jdƒ t|tjƒƒ}||d jdƒ |t|t	jƒƒt
tgƒ d S )Nr   r.   r-   zC1())r   r   r@   rA   r+   Úchildrenr.   r0   rC   r7   r9   r=   )r   r   rD   rE   r   r   r   Útest_transform_node_childrend   s    z2TransformChildrenTest.test_transform_node_childrenN)r&   r'   r(   rF   rH   r   r   r   r   r?   S   s   r?   c               @   sZ   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
e d¡dd„ ƒZdS )ÚModuleBrowserTreeItemTestc             C   s   t  t¡| _d S )N)r   r"   ÚfnameÚmbt)r   r   r   r   r   t   s    z$ModuleBrowserTreeItemTest.setUpClassc             C   s   |   | jjt¡ d S )N)r   rK   ÚfilerJ   )r   r   r   r   r   x   s    z#ModuleBrowserTreeItemTest.test_initc             C   s   |   | j ¡ t¡ d S )N)r   rK   ÚGetTextrJ   )r   r   r   r   Útest_gettext{   s    z&ModuleBrowserTreeItemTest.test_gettextc             C   s   |   | j ¡ d¡ d S )NÚpython)r   rK   ÚGetIconName)r   r   r   r   Útest_geticonname~   s    z*ModuleBrowserTreeItemTest.test_geticonnamec             C   s   |   | j ¡ ¡ d S )N)r$   rK   ÚIsExpandable)r   r   r   r   Útest_isexpandable   s    z+ModuleBrowserTreeItemTest.test_isexpandablec             C   s\   t jj}t j}ttdt j_tttgdt _z|  | j	 
¡ ttg¡ W d |t j_|t _X d S )N)Úresult)r   r   Zreadmodule_exr@   r   rB   r7   r+   r   rK   Úlistchildren)r   Zsave_rexZsave_tcr   r   r   Útest_listchildren„   s    z+ModuleBrowserTreeItemTest.test_listchildrenc             C   sb   | j }tttgd|_| ¡ \}}|`|  |tj¡ |  |tj¡ |  	|j
d¡ |  	|j
d¡ d S )N)rT   r7   zC0(base))rK   r   r7   r+   rU   Ú
GetSubListr   r   ÚChildBrowserTreeItemr   rC   )r   rK   Zsub0Zsub1r   r   r   Útest_getsublist   s    z)ModuleBrowserTreeItemTest.test_getsublistzidlelib.browser.file_openc          	   C   sh   | j }tjddd | ¡  | ¡  W d Q R X tjddd  | ¡  | ¡  | t¡ W d Q R X d S )Nzos.path.existsF)Úreturn_valueT)rK   r   ÚpatchÚOnDoubleClickZassert_not_calledÚassert_calledZcalled_withrJ   )r   ÚfopenrK   r   r   r   Útest_ondoubleclick™   s    z,ModuleBrowserTreeItemTest.test_ondoubleclickN)r&   r'   r(   r)   r   r   rN   rQ   rS   rV   rY   r   r[   r_   r   r   r   r   rI   r   s   
rI   c               @   s^   e Zd Zedd„ ƒZedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
e d¡dd„ ƒZdS )ÚChildBrowserTreeItemTestc             C   s(   t j}|tƒ| _|tƒ| _|tƒ| _d S )N)r   rX   r9   Úcbt_f1r0   Úcbt_C1r.   Úcbt_F1)r   ÚCBTr   r   r   r   ©   s    

z#ChildBrowserTreeItemTest.setUpClassc             C   s   | ` | `| `d S )N)rb   ra   rc   )r   r   r   r   r   °   s    z&ChildBrowserTreeItemTest.tearDownClassc             C   sB   | j }|| jjdƒ |  | jj¡ || jjdƒ |  | jj¡ d S )NzC1()r9   )r   rb   rC   ÚassertFalseZ
isfunctionra   r$   )r   r   r   r   r   r   ´   s
    z"ChildBrowserTreeItemTest.test_initc             C   s(   |   | j ¡ d¡ |   | j ¡ d¡ d S )Nz
class C1()zdef f1(...))r   rb   rM   ra   )r   r   r   r   rN   »   s    z%ChildBrowserTreeItemTest.test_gettextc             C   s(   |   | j ¡ d¡ |   | j ¡ d¡ d S )NÚfolderrO   )r   rb   rP   ra   )r   r   r   r   rQ   ¿   s    z)ChildBrowserTreeItemTest.test_geticonnamec             C   s4   |   | j ¡ ¡ |   | j ¡ ¡ |  | j ¡ ¡ d S )N)r$   rb   rR   ra   re   rc   )r   r   r   r   rS   Ã   s    z*ChildBrowserTreeItemTest.test_isexpandablec             C   sX   | j }tj}| j ¡ }|  |d |¡ |t|ƒdƒ ||d jdƒ || j ¡ g ƒ d S )Nr   r-   r;   )	r   r   rX   ra   rW   r   ÚlenrC   rc   )r   r   rd   Z	f1sublistr   r   r   rY   È   s    
z(ChildBrowserTreeItemTest.test_getsublistzidlelib.browser.file_openc             C   s>   t  ¡  }|j_| j ¡  | ¡  | ¡  | | jjj	¡ d S )N)
r   ZMockrZ   Zgotolinerc   r\   r]   Zassert_called_withÚobjÚlineno)r   r^   Zgotor   r   r   r_   Ó   s
    
z+ChildBrowserTreeItemTest.test_ondoubleclickN)r&   r'   r(   r)   r   r   r   rN   rQ   rS   rY   r   r[   r_   r   r   r   r   r`   §   s   r`   c               @   s   e Zd ZdZdd„ ZdS )ÚNestedChildrenTestzFTest that all the nodes in a nested tree are added to the BrowserTree.c          	   C   s²   t ƒ }g }ddddddddd	g	}tj}| |tƒ|tƒf¡ xd|r | ¡ }| ¡ }| |¡ |  |j	| 
¡ ¡ |  | ¡ d
¡ |  | ¡ |g k¡ | |j	¡ q>W |  ||¡ d S )Nr7   zC0(base)r9   r=   r.   zC1()r;   r3   r5   )rO   rf   )r   r   rX   Úextendr7   r+   ÚpopleftrW   r   rC   rM   rP   ZassertIsrR   Úappendr   )r   ZqueueZactual_namesZexpected_namesrd   ÚcbZsublistr   r   r   Útest_nestedà   s"    
zNestedChildrenTest.test_nestedN)r&   r'   r(   Ú__doc__ro   r   r   r   r   rj   Ý   s   rj   Ú__main__é   )Ú	verbosity)-rp   Zidlelibr   Ztest.supportr   Zunittestr   Zidlelib.idle_test.mock_idler   Úcollectionsr   Zos.pathr   r   Ztkinterr   Zidlelib.treer   ZTestCaser	   r   ÚmodulerJ   ZClassr+   Z_nest_functionr.   Z_nest_classr0   r3   r5   ZFunctionr7   r9   r;   r=   rB   r@   rG   r?   rI   r`   rj   r&   Úmainr   r   r   r   Ú<module>   s>   -
56
