o
    FXîhä   ã                   @   s¾  	 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
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jeddgedddZe eddd¡Ze eddddg¡Ze eddd¡Ze eddd¡Zej ededddZ!e e!ddd ¡Z"e e"d!d"d"¡Z#e e!d#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/d0 dS dS )1é    )Úbrowser)ÚrequiresN)Úmock)ÚFunc)Úpy_extensions)Údeque)ÚTk)ÚTreeNodec                   @   sL   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
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   úH/opt/python-3.10.19/usr/lib/python3.10/idlelib/idle_test/test_browser.pyÚ
setUpClass   s   
zModuleBrowserTest.setUpClassc                 C   s*   | j  ¡  | j ¡  | j ¡  | `| ` d S ©N)r   Úcloser   Zupdate_idletasksÚdestroyr   r   r   r   ÚtearDownClass   s   


zModuleBrowserTest.tearDownClassc                 C   sB   | j }| j}||jtƒ |tji ƒ |  |jt¡ |  	t
j¡ d S r   )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 r   )r   Ú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 r   )r   r   r"   r   r   r   Ú
assertTrueZcalledr$   r   r   r   Ú
test_close4   s   

zModuleBrowserTest.test_closec              	   C   sj   d}t D ].}| j|d |› |› }t |¡}|tjv}|  ||¡ W d   ƒ n1 s-w   Y  qd S )Nz/path/to/file)Úext)r   ZsubTestr   Zis_browseable_extensionZbrowseable_extension_blocklistr   )r   r   r+   ÚfilenameÚactualZexpectedr   r   r   Útest_is_browseable_extension=   s   

ü€ÿz.ModuleBrowserTest.test_is_browseable_extensionN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r   r%   r(   r*   r.   r   r   r   r   r
      s    

	r
   )Útestztest.pyÚC0Úbaseé   é	   )Ú
end_linenoÚF1é   é   ÚC1é   Ú ÚC2é   ÚF3Úf0é   é   Úf1é   é   Úf2é   Úc1)r4   rB   r3   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 )Nr3   r   úC0(base)r6   rB   zdifferent name)r   r   Útransform_childrenÚlistÚmock_pyclbr_treer4   rB   Úname©r   r   Z	transformZtclr   r   r   Útest_transform_module_children_   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   r9   r6   úC1())r   r   rM   rN   r4   Úchildrenr9   r<   rP   rB   rE   rJ   rQ   r   r   r   Útest_transform_node_childrenn   s   z2TransformChildrenTest.test_transform_node_childrenN)r/   r0   r1   rR   rU   r   r   r   r   rK   ]   s    rK   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 r   )r   r'   ÚfnameÚmbtr   r   r   r   r   ~   ó   z$ModuleBrowserTreeItemTest.setUpClassc                 C   s   |   | jjt¡ d S r   )r   rX   ÚfilerW   ©r   r   r   r   r   ‚   ó   z#ModuleBrowserTreeItemTest.test_initc                 C   s   |   | j ¡ t¡ d S r   )r   rX   ÚGetTextrW   r[   r   r   r   Útest_gettext…   ó   z&ModuleBrowserTreeItemTest.test_gettextc                 C   s   |   | j ¡ d¡ d S )NÚpython)r   rX   ÚGetIconNamer[   r   r   r   Útest_geticonnameˆ   r_   z*ModuleBrowserTreeItemTest.test_geticonnamec                 C   s   |   | j ¡ ¡ d S r   )r)   rX   ÚIsExpandabler[   r   r   r   Útest_isexpandable‹   r\   z+ModuleBrowserTreeItemTest.test_isexpandablec                 C   sh   t jj}t j}ttdt j_tttgdt _z|  | j	 
¡ ttg¡ W |t j_|t _d S |t j_|t _w )N©Úresult)r   r   Zreadmodule_exrM   r   rO   rB   r4   r   rX   Ú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 )Nre   rB   rL   )rX   r   rB   r4   rg   Ú
GetSubListr   r   ÚChildBrowserTreeItemr   rP   )r   rX   Zsub0Zsub1r   r   r   Útest_getsublist™   s   z)ModuleBrowserTreeItemTest.test_getsublistúidlelib.browser.file_openc                 C   sŠ   | j }tjddd | ¡  | ¡  W d   ƒ n1 sw   Y  tjddd | ¡  | t¡ W d   ƒ d S 1 s>w   Y  d S )Nzos.path.existsF)Úreturn_valueT)rX   r   ÚpatchÚOnDoubleClickZassert_not_calledZassert_called_once_withrW   )r   ÚfopenrX   r   r   r   Útest_ondoubleclick£   s   
þ"þz,ModuleBrowserTreeItemTest.test_ondoubleclickN)r/   r0   r1   r2   r   r   r^   rb   rd   rh   rk   r   rn   rq   r   r   r   r   rV   |   s    

rV   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 r   )r   rj   rE   Úcbt_f1r<   Úcbt_C1r9   Úcbt_F1)r   ÚCBTr   r   r   r   ²   s   

z#ChildBrowserTreeItemTest.setUpClassc                 C   s   | ` | `| `d S r   )rt   rs   ru   r   r   r   r   r   ¹   rY   z&ChildBrowserTreeItemTest.tearDownClassc                 C   sB   | j }|| jjdƒ |  | jj¡ || jjdƒ |  | jj¡ d S )NrS   rE   )r   rt   rP   ÚassertFalseZ
isfunctionrs   r)   )r   r   r   r   r   r   ½   s
   z"ChildBrowserTreeItemTest.test_initc                 C   ó(   |   | j ¡ d¡ |   | j ¡ d¡ d S )Nz
class C1()zdef f1(...))r   rt   r]   rs   r[   r   r   r   r^   Ä   ó   z%ChildBrowserTreeItemTest.test_gettextc                 C   rx   )NÚfolderr`   )r   rt   ra   rs   r[   r   r   r   rb   È   ry   z)ChildBrowserTreeItemTest.test_geticonnamec                 C   s4   |   | j ¡ ¡ |   | j ¡ ¡ |  | j ¡ ¡ d S r   )r)   rt   rc   rs   rw   ru   r[   r   r   r   rd   Ì   s   z*ChildBrowserTreeItemTest.test_isexpandablec                 C   sX   | j }tj}| j ¡ }|  |d |¡ |t|ƒdƒ ||d jdƒ || j ¡ g ƒ d S )Nr   r6   rH   )	r   r   rj   rs   ri   r   ÚlenrP   ru   )r   r   rv   Z	f1sublistr   r   r   rk   Ñ   s   
z(ChildBrowserTreeItemTest.test_getsublistrl   c                 C   s>   t  ¡  }|j_| j ¡  | ¡  | ¡  | | jjj	¡ d S r   )
r   ZMockrm   Zgotolineru   ro   Zassert_calledZassert_called_withÚobjÚlineno)r   rp   Zgotor   r   r   rq   Ü   s
   
z+ChildBrowserTreeItemTest.test_ondoubleclickN)r/   r0   r1   r2   r   r   r   r^   rb   rd   rk   r   rn   rq   r   r   r   r   rr   °   s    

rr   c                   @   s   e Zd Z	 dd„ ZdS )ÚNestedChildrenTestc                 C   s¢   t ƒ }g }g d¢}tj}| |tƒ|tƒf¡ |rI| ¡ }| ¡ }| |¡ |  |j	| 
¡ ¡ |  | ¡ d¡ |  | ¡ |g k¡ | |j	¡ |s|  ||¡ d S )N)	rB   rL   rE   rJ   r9   rS   rH   r?   rA   )r`   rz   )r   r   rj   ÚextendrB   r4   Úpopleftri   r   rP   r]   ra   ZassertIsrc   Úappendr   )r   ÚqueueZactual_namesZexpected_namesrv   ÚcbZsublistr   r   r   Útest_nestedé   s   
ùzNestedChildrenTest.test_nestedN)r/   r0   r1   r„   r   r   r   r   r~   æ   s    r~   Ú__main__é   )Ú	verbosity).Zidlelibr   Ztest.supportr   Zunittestr   Zidlelib.idle_test.mock_idler   Zidlelib.utilr   Úcollectionsr   Zos.pathr    r   Útkinterr   Zidlelib.treer	   ZTestCaser
   r   ÚmodulerW   ZClassr4   Z_nest_functionr9   Z_nest_classr<   r?   rA   ZFunctionrB   rE   rH   rJ   rO   rM   rT   rK   rV   rr   r~   r/   Úmainr   r   r   r   Ú<module>   sD    6
46ÿ