<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
 f2                 @   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m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edZejeddZejeddZejeddZejeddgedZ eje ddZ!eje dddgZ"eje"dd Z#eje#d!d"Z$ee d#Z%ej&e%d ej&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rej-dd- dS )/zTest browser, coverage 90%.    )browser)requiresN)mock)Func)deque)_pyclbr)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j  tj| jtdd| _d S )NZguiT)Z_utest)r   r   rootZwithdrawr   ZModuleBrowser__file__mb)cls r   C/opt/alt/python36/lib64/python3.6/idlelib/idle_test/test_browser.py
setUpClass   s    
zModuleBrowserTest.setUpClassc             C   s*   | j j  | j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|jt | j	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 }| jtjjt|jj  | j|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 }|j }| 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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
   testtest.pyf0   f1   f2   c1   C0base   F1   C1    C2   F3   )r-   r5   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   r-   r.   zC0(base)zdifferent name)r   r   transform_childrenlistmock_pyclbr_treer-   r5   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   r8   r.   zC1())r   r   rB   rC   r5   childrenr8   r:   rE   r-   r/   r3   )r   r   rF   rG   r   r   r   test_transform_node_childrend   s    z2TransformChildrenTest.test_transform_node_childrenN)r'   r(   r)   rH   rJ   r   r   r   r   rA   S   s   rA   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jddd ZdS )ModuleBrowserTreeItemTestc             C   s   t jt| _d S )N)r   r#   fnamembt)r   r   r   r   r   t   s    z$ModuleBrowserTreeItemTest.setUpClassc             C   s   | j | jjt d S )N)r   rM   filerL   )r   r   r   r   r   x   s    z#ModuleBrowserTreeItemTest.test_initc             C   s   | j | jj t d S )N)r   rM   GetTextrL   )r   r   r   r   test_gettext{   s    z&ModuleBrowserTreeItemTest.test_gettextc             C   s   | j | jj d d S )Npython)r   rM   GetIconName)r   r   r   r   test_geticonname~   s    z*ModuleBrowserTreeItemTest.test_geticonnamec             C   s   | j | jj  d S )N)r%   rM   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| j	j
 ttg W d |t j_|t _X d S )N)result)r   r   Zreadmodule_exrB   r   rD   r-   r5   r   rM   listchildren)r   Zsave_rexZsave_tcr   r   r   test_listchildren   s    z+ModuleBrowserTreeItemTest.test_listchildrenc             C   sb   | j }tttgd|_|j \}}|`| j|tj | j|tj | j	|j
d | j	|j
d d S )N)rV   r-   zC0(base))rM   r   r-   r5   rW   
GetSubListr   r   ChildBrowserTreeItemr   rE   )r   rM   Zsub0Zsub1r   r   r   test_getsublist   s    z)ModuleBrowserTreeItemTest.test_getsublistzidlelib.browser.file_openc             C   sh   | j }tjddd |j  |j  W d Q R X tjddd  |j  |j  |jt W d Q R X d S )Nzos.path.existsF)return_valueT)rM   r   patchOnDoubleClickZassert_not_calledassert_calledZcalled_withrL   )r   fopenrM   r   r   r   test_ondoubleclick   s    z,ModuleBrowserTreeItemTest.test_ondoubleclickN)r'   r(   r)   r*   r   r   rP   rS   rU   rX   r[   r   r]   ra   r   r   r   r   rK   r   s   
rK   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jddd ZdS )ChildBrowserTreeItemTestc             C   s(   t j}|t| _|t| _|t| _d S )N)r   rZ   r/   cbt_f1r:   cbt_C1r8   cbt_F1)r   CBTr   r   r   r      s    

z#ChildBrowserTreeItemTest.setUpClassc             C   s   | ` | `| `d S )N)rd   rc   re   )r   r   r   r   r      s    z&ChildBrowserTreeItemTest.tearDownClassc             C   sB   | j }|| jjd | j| jj || jjd | j| jj d S )NzC1()r/   )r   rd   rE   assertFalseZ
isfunctionrc   r%   )r   r   r   r   r   r      s
    z"ChildBrowserTreeItemTest.test_initc             C   s(   | j | jj d | j | jj d d S )Nz
class C1()zdef f1(...))r   rd   rO   rc   )r   r   r   r   rP      s    z%ChildBrowserTreeItemTest.test_gettextc             C   s(   | j | jj d | j | jj d d S )NfolderrQ   )r   rd   rR   rc   )r   r   r   r   rS      s    z)ChildBrowserTreeItemTest.test_geticonnamec             C   s4   | j | jj  | j | jj  | j| jj  d S )N)r%   rd   rT   rc   rg   re   )r   r   r   r   rU      s    z*ChildBrowserTreeItemTest.test_isexpandablec             C   sX   | j }tj}| jj }| j|d | |t|d ||d jd || jj g  d S )Nr   r.   r1   )	r   r   rZ   rc   rY   r   lenrE   re   )r   r   rf   Z	f1sublistr   r   r   r[      s    
z(ChildBrowserTreeItemTest.test_getsublistzidlelib.browser.file_openc             C   s>   t j  }|j_| jj  |j  |j  |j| jjj	 d S )N)
r   ZMockr\   Zgotolinere   r^   r_   Zassert_called_withobjlineno)r   r`   Zgotor   r   r   ra      s
    
z+ChildBrowserTreeItemTest.test_ondoubleclickN)r'   r(   r)   r*   r   r   r   rP   rS   rU   r[   r   r]   ra   r   r   r   r   rb      s   rb   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}|j|t|tf xd|r|j }|j }|j| | j|j	|j
  | j|j d | j|j |g k |j|j	 q>W | j|| d S )Nr-   zC0(base)r/   r3   r8   zC1()r1   r=   r?   rQ   rh   )rQ   rh   )r   r   rZ   extendr-   r5   popleftrY   r   rE   rO   rR   ZassertIsrT   appendr   )r   ZqueueZactual_namesZexpected_namesrf   cbZsublistr   r   r   test_nested   s"    
zNestedChildrenTest.test_nestedN)r'   r(   r)   __doc__rq   r   r   r   r   rl      s   rl   __main__)	verbosity)r+   r,   ).rr   Zidlelibr   Ztest.supportr   Zunittestr   Zidlelib.idle_test.mock_idler   collectionsr   Zos.pathr   r   r   Ztkinterr   Zidlelib.treer	   ZTestCaser
   r   modulerL   ZFunctionr-   Z_nest_functionr/   r1   Z_nest_classr3   ZClassr5   r8   r:   r=   r?   rD   rB   rI   rA   rK   rb   rl   r'   mainr   r   r   r   <module>   s>   -
56
