
    z%i                      r   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mZ ddlZddlZdd	lmZ dd
lmZ  G d dej(                        ZeZd\  ZZej3                  eddgedd      Zej7                  eddd      Zej;                  eddddg      Zej;                  eddd      Zej7                  eddd      Z ejC                  ededd      Z"ej7                  e"dd d!      Z#ej7                  e#d"d#d#      Z$ej;                  e"d$dd      Z%ee"d%Z& ejN                  e&d&        ejN                  ejP                          G d' d(ej(                        Z) G d) d*ej(                        Z* G d+ d,ej(                        Z+ G d- d.ej(                        Z,e-d/k(  r ej\                  d01       yy)2zTest browser, coverage 90%.    )browser)requiresN)mock)Func)py_extensions)deque)Tk)TreeNodec                   J    e Zd Zed        Zed        Zd Zd Zd Zd Z	d Z
y)	ModuleBrowserTestc                     t        d       t               | _        | j                  j                          t	        j
                  | j                  t        d      | _        y )NguiT)_utest)r   r	   rootwithdrawr   ModuleBrowser__file__mbclss    R/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/idle_test/test_browser.py
setUpClasszModuleBrowserTest.setUpClass   s<    4&&sxx$G    c                     | j                   j                          | j                  j                          | j                  j	                          | `| ` y N)r   closer   update_idletasksdestroyr   s    r   tearDownClasszModuleBrowserTest.tearDownClass   s8    !!#Hcfr   c                    | j                   }| j                  } ||j                  t                |t        j
                  i        | j                  |j                  t               | j                  t        j                         y r   )r   assertEqualpathr   pyclbr_modulesassertIsInstancenoder
   assertIsNotNoner   	file_open)selfr   eqs      r   	test_initzModuleBrowserTest.test_init"   sZ    WW
277H
6??Bbggx0W../r   c                    | j                   }| j                  t        j                  j	                  t
              |j                  j                                | j                  |j                  j                         d       y )NzModule Browser)
r   assertInosr"   basenamer   toptitler!   iconnamer)   r   s     r   test_settitlezModuleBrowserTest.test_settitle*   sN    WWbgg&&x0"&&,,.A*,<=r   c                 |    | j                   }|j                         }| j                  |t        j                         y r   )r   rootnoder%   r   ModuleBrowserTreeItem)r)   r   rns      r   test_rootnodezModuleBrowserTest.test_rootnode/   s,    WW[[]b'"?"?@r   c                    | j                   }t               |j                  _        t               |j                  _        |j                          | j                  |j                  j                  j                         | j                  |j                  j                  j                         |j                  `|j                  `y r   )r   r   r0   r   r&   r   
assertTruecalledr3   s     r   
test_closezModuleBrowserTest.test_close4   ss    WW&

--.../FFNBGGOr   c                     d}t         D ]\  }| j                  |      5  | | }t        j                  |      }|t        j                  v}| j                  ||       d d d        ^ y # 1 sw Y   ixY w)Nz/path/to/file)ext)r   subTestr   is_browseable_extensionbrowseable_extension_blocklistr!   )r)   r"   r?   filenameactualexpecteds         r   test_is_browseable_extensionz.ModuleBrowserTest.test_is_browseable_extension=   s{      	3C#& 3"VC5> 88Bg&L&LL  2	3 3	33 3s   A A))A2	N)__name__
__module____qualname__classmethodr   r   r+   r4   r9   r=   rF    r   r   r   r      sD    H H  0>
A
,3r   r   )testztest.pyC0base   	   )
end_linenoF1      C1    C2   F3f0      f1      f2   c1)rM   r[   rL   c                       e Zd Zd Zd Zy)TransformChildrenTestc                 |   | 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        y )NrL   r   C0(base)rO   r[   zdifferent name)r!   r   transform_childrenlistmock_pyclbr_treerM   r[   namer)   r*   	transformtcls       r   test_transform_module_childrenz4TransformChildrenTest.test_transform_module_children_   s    ..	9-v67
3R
3q6;;
#
3q6;;9-v67
3q6;;
#9-/?@A
3r   c                    | 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       y )Nr   rR   rO   C1())r!   r   rh   ri   rM   childrenrR   rU   rk   r[   r^   rc   rl   s       r   test_transform_node_childrenz2TransformChildrenTest.test_transform_node_childrenn   s    ..	9R[[)*
3R
3q6;;
3q6;;9R[[)*
3q6;;
4	"++&'"b2r   N)rG   rH   rI   ro   rs   rK   r   r   re   re   ]   s    3r   re   c                   p    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
 ej                  d      d	        Zy
)ModuleBrowserTreeItemTestc                 @    t        j                  t              | _        y r   )r   r7   fnamembtr   s    r   r   z$ModuleBrowserTreeItemTest.setUpClass~   s    //6r   c                 X    | j                  | j                  j                  t               y r   )r!   rx   filerw   r)   s    r   r+   z#ModuleBrowserTreeItemTest.test_init   s    .r   c                 `    | j                  | j                  j                         t               y r   )r!   rx   GetTextrw   r{   s    r   test_gettextz&ModuleBrowserTreeItemTest.test_gettext   s    ))+U3r   c                 X    | j                  | j                  j                         d       y )Npython)r!   rx   GetIconNamer{   s    r   test_geticonnamez*ModuleBrowserTreeItemTest.test_geticonname   s    --/:r   c                 V    | j                  | j                  j                                y r   )r;   rx   IsExpandabler{   s    r   test_isexpandablez+ModuleBrowserTreeItemTest.test_isexpandable   s    --/0r   c                    t         j                  j                  }t         j                  }t	        t
              t         j                  _        t	        t        t        g      t         _        	 | j                  | j                  j                         t        t        g       |t         j                  _        |t         _        y # |t         j                  _        |t         _        w xY w)Nresult)r   r#   readmodule_exrh   r   rj   r[   rM   r!   rx   listchildren)r)   save_rexsave_tcs      r   test_listchildrenz+ModuleBrowserTreeItemTest.test_listchildren   s    >>//,,'+3C'D$%)"b%:"	1TXX224r2h?+3GNN()0G& ,4GNN()0G&s   .4C "C%c                 l   | j                   }t        t        t        g      |_        |j                         \  }}|`| j                  |t        j                         | j                  |t        j                         | j                  |j                  d       | j                  |j                  d       y )Nr   r[   rg   )rx   r   r[   rM   r   
GetSubListr%   r   ChildBrowserTreeItemr!   rk   )r)   rx   sub0sub1s       r   test_getsublistz)ModuleBrowserTreeItemTest.test_getsublist   s    hhBx0^^%
ddG$@$@AdG$@$@AD)J/r   idlelib.browser.file_openc                 V   | j                   }t        j                  dd      5  |j                          |j	                          d d d        t        j                  dd      5  |j                          |j                  t               d d d        y # 1 sw Y   OxY w# 1 sw Y   y xY w)Nzos.path.existsF)return_valueT)rx   r   patchOnDoubleClickassert_not_calledassert_called_once_withrw   )r)   fopenrx   s      r   test_ondoubleclickz,ModuleBrowserTreeItemTest.test_ondoubleclick   s    hhZZ(u= 	&##%	& ZZ(t< 	1))%0	1 	1		& 	&	1 	1s   !B$&BBB(N)rG   rH   rI   rJ   r   r+   r~   r   r   r   r   r   r   r   rK   r   r   ru   ru   |   sR    7 7/4;1	10 TZZ+,	1 -	1r   ru   c                   z    e Zd Zed        Zed        Zd Zd Zd Zd Z	d Z
 ej                  d      d	        Zy
)ChildBrowserTreeItemTestc                     t         j                  } |t              | _         |t              | _         |t              | _        y r   )r   r   r^   cbt_f1rU   cbt_C1rR   cbt_F1)r   CBTs     r   r   z#ChildBrowserTreeItemTest.setUpClass   s.    **W
W
W
r   c                     | ` | `| `y r   )r   r   r   r   s    r   r   z&ChildBrowserTreeItemTest.tearDownClass   s    J
CJr   c                 $   | j                   } || j                  j                  d       | j                  | j                  j                          || j
                  j                  d       | j                  | j
                  j                         y )Nrq   r^   )r!   r   rk   assertFalse
isfunctionr   r;   )r)   r*   s     r   r+   z"ChildBrowserTreeItemTest.test_init   sc    
4;;V$//0
4;;T"../r   c                     | j                  | j                  j                         d       | j                  | j                  j                         d       y )Nz
class C1()zdef f1(...))r!   r   r}   r   r{   s    r   r~   z%ChildBrowserTreeItemTest.test_gettext   s<    ,,.=,,.>r   c                     | j                  | j                  j                         d       | j                  | j                  j                         d       y )Nfolderr   )r!   r   r   r   r{   s    r   r   z)ChildBrowserTreeItemTest.test_geticonname   s<    002H=002H=r   c                     | j                  | j                  j                                | j                  | j                  j                                | j	                  | j
                  j                                y r   )r;   r   r   r   r   r   r{   s    r   r   z*ChildBrowserTreeItemTest.test_isexpandable   sO    002300231134r   c                 ,   | j                   }t        j                  }| j                  j	                         }| j                  |d   |        |t        |      d        ||d   j                  d        || j                  j	                         g        y )Nr   rO   ra   )	r!   r   r   r   r   r%   lenrk   r   )r)   r*   r   	f1sublists       r   r   z(ChildBrowserTreeItemTest.test_getsublist   sw    **KK**,	ilC0
3y>1
9Q<d#
4;;!!#R(r   r   c                     t        j                         x}|j                  _        | j                  j                          |j                          |j                          |j                  | j                  j                  j                         y r   )
r   Mockr   gotoliner   r   assert_calledassert_called_withobjlineno)r)   r   gotos      r   r   z+ChildBrowserTreeItemTest.test_ondoubleclick   s_    -1YY[8u!!*!!# 6 67r   N)rG   rH   rI   rJ   r   r   r+   r~   r   r   r   r   r   r   rK   r   r   r   r      sa      / /0?>5
	) TZZ+,8 -8r   r   c                       e Zd ZdZd Zy)NestedChildrenTestzFTest that all the nodes in a nested tree are added to the BrowserTree.c                 2   t               }g }g d}t        j                  }|j                   |t               |t
              f       |r|j                         }|j                         }|j                  |       | j                  |j                  |j                                | j                  |j                         d       | j                  |j                         |g k7         |j                  |j                         |r| j                  ||       y )N)	r[   rg   r^   rc   rR   rq   ra   rX   rZ   )r   r   )r   r   r   extendr[   rM   popleftr   r-   rk   r}   r   assertIsr   appendr!   )r)   queueactual_namesexpected_namesr   cbsublists          r   test_nestedzNestedChildrenTest.test_nested   s      **c"gs2w'(BmmoGLL!MM"''2::<0MM"..*,@AMM"//+W];(  	~6r   N)rG   rH   rI   __doc__r   rK   r   r   r   r      s
    L7r   r   __main__   )	verbosity)/r   idlelibr   test.supportr   unittestr   idlelib.idle_test.mock_idler   idlelib.utilr   collectionsr   os.pathr.   r#   tkinterr	   idlelib.treer
   TestCaser   r   modulerw   ClassrM   _nest_functionrR   _nest_classrU   rX   rZ   Functionr[   r^   ra   rc   rj   rh   rr   re   ru   r   r   rG   mainrK   r   r   <module>r      s     !   , &     !23)) 23l !XXfdVHeQ1X=r4A&^^BaRD)^^Ba#r4A&[[ubR[8r4R(r4R(^^Bb"%B'    +V 4   2;; '3H-- 3>11 1 1 11h28x00 28l7** 74 zHMMA r   