3 § f2ã@s dZddlmZddlmZddlZddlmZddlmZddl m Z ddl Z ddlm Zdd lmZdd lmZGd d „d ejƒZeZd.\ZZejededƒZejeddƒZejeddƒZejeddƒZejeddgedƒZ eje ddƒZ!eje dddgƒZ"eje"dd ƒZ#eje#d!d"ƒZ$ee d#œZ%ej&e%d ƒej&e j'ƒ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-dd-�dS)/zTest browser, coverage 90%.é)Úbrowser)ÚrequiresN)Úmock)ÚFunc)Údeque)Ú_pyclbr)ÚTk)ÚTreeNodec@sDeZdZedd„ƒZedd„ƒZdd„Zdd„Zd d „Zd d „Z d S)ÚModuleBrowserTestcCs2tdƒtƒ|_|jjƒtj|jtdd�|_dS)NZguiT)Z_utest)rrÚrootZwithdrawrZ ModuleBrowserÚ__file__Úmb)Úcls©rúC/opt/alt/python36/lib64/python3.6/idlelib/idle_test/test_browser.pyÚ setUpClasss zModuleBrowserTest.setUpClasscCs*|jjƒ|jjƒ|jjƒ|`|`dS)N)r Úcloser Zupdate_idletasksÚdestroy)rrrrÚ tearDownClasss   zModuleBrowserTest.tearDownClasscCsB|j}|j}||jtƒ|tjiƒ|j|jtƒ|j t j ƒdS)N) r Ú assertEqualÚpathr ÚpyclbrZ_modulesÚassertIsInstanceÚnoder ZassertIsNotNonerZ file_open)Úselfr ÚeqrrrÚ test_init!s   zModuleBrowserTest.test_initcCs6|j}|jtjjtƒ|jjƒƒ|j|jj ƒdƒdS)NzModule Browser) r ÚassertInÚosrÚbasenamer ÚtopÚtitlerZiconname)rr rrrÚ test_settitle)szModuleBrowserTest.test_settitlecCs |j}|jƒ}|j|tjƒdS)N)r ZrootnoderrÚModuleBrowserTreeItem)rr ZrnrrrÚ test_rootnode.szModuleBrowserTest.test_rootnodecCsR|j}tƒ|j_tƒ|j_|jƒ|j|jjjƒ|j|jjjƒ|j`|j`dS)N)r rr rrrÚ assertTrueZcalled)rr rrrÚ test_close3s  zModuleBrowserTest.test_closeN) Ú__name__Ú __module__Ú __qualname__Ú classmethodrrrr"r$r&rrrrr s   r Útestútest.pyÚf0éÚf1éÚf2éÚc1éÚC0ÚbaseéÚF1éÚC1é ÚÚC2é ÚF3é)r-r5c@seZdZdd„Zdd„ZdS)ÚTransformChildrenTestcCs‚|j}tj}t|tdƒƒ}||ttgƒ||djdƒ||djdƒt|tdƒƒ}||djdƒt|tdƒƒ}||gƒdS)Nr+rr-r.zC0(base)zdifferent name)rrÚtransform_childrenÚlistÚmock_pyclbr_treer-r5Ú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)Nrr8r.zC1()) rrrBrCr5Úchildrenr8r:rEr-r/r3)rrrFrGrrrÚtest_transform_node_childrendsz2TransformChildrenTest.test_transform_node_childrenN)r'r(r)rHrJrrrrrASsrAc@sZeZdZedd„ƒZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z e j dƒdd„ƒZ dS)ÚModuleBrowserTreeItemTestcCstjtƒ|_dS)N)rr#ÚfnameÚmbt)rrrrrtsz$ModuleBrowserTreeItemTest.setUpClasscCs|j|jjtƒdS)N)rrMÚfilerL)rrrrrxsz#ModuleBrowserTreeItemTest.test_initcCs|j|jjƒtƒdS)N)rrMÚGetTextrL)rrrrÚ test_gettext{sz&ModuleBrowserTreeItemTest.test_gettextcCs|j|jjƒdƒdS)NÚpython)rrMÚ GetIconName)rrrrÚtest_geticonname~sz*ModuleBrowserTreeItemTest.test_geticonnamecCs|j|jjƒƒdS)N)r%rMÚ IsExpandable)rrrrÚtest_isexpandable�sz+ModuleBrowserTreeItemTest.test_isexpandablec Cs\tjj}tj}ttd�tj_tttgd�t_z|j|j j ƒttgƒWd|tj_|t_XdS)N)Úresult) rrZ readmodule_exrBrrDr-r5rrMÚ listchildren)rZsave_rexZsave_tcrrrÚtest_listchildren„sz+ModuleBrowserTreeItemTest.test_listchildrencCsb|j}tttgd�|_|jƒ\}}|`|j|tjƒ|j|tjƒ|j |j dƒ|j |j dƒdS)N)rVr-zC0(base)) rMrr-r5rWÚ GetSubListrrÚChildBrowserTreeItemrrE)rrMZsub0Zsub1rrrÚtest_getsublist�s z)ModuleBrowserTreeItemTest.test_getsublistzidlelib.browser.file_opencCsh|j}tjddd��|jƒ|jƒWdQRXtjddd�� |jƒ|jƒ|jtƒWdQRXdS)Nzos.path.existsF)Ú return_valueT)rMrÚpatchÚ OnDoubleClickZassert_not_calledÚ assert_calledZ called_withrL)rÚfopenrMrrrÚtest_ondoubleclick™sz,ModuleBrowserTreeItemTest.test_ondoubleclickN)r'r(r)r*rrrPrSrUrXr[rr]rarrrrrKrs   rKc@s^eZdZedd„ƒZedd„ƒZdd„Zdd„Zd d „Zd d „Z d d„Z e j dƒdd„ƒZ dS)ÚChildBrowserTreeItemTestcCs(tj}|tƒ|_|tƒ|_|tƒ|_dS)N)rrZr/Úcbt_f1r:Úcbt_C1r8Úcbt_F1)rÚCBTrrrr©s  z#ChildBrowserTreeItemTest.setUpClasscCs|`|`|`dS)N)rdrcre)rrrrr°sz&ChildBrowserTreeItemTest.tearDownClasscCsB|j}||jjdƒ|j|jjƒ||jjdƒ|j|jjƒdS)NzC1()r/)rrdrEÚ assertFalseZ isfunctionrcr%)rrrrrr´s z"ChildBrowserTreeItemTest.test_initcCs(|j|jjƒdƒ|j|jjƒdƒdS)Nz class C1()z def f1(...))rrdrOrc)rrrrrP»sz%ChildBrowserTreeItemTest.test_gettextcCs(|j|jjƒdƒ|j|jjƒdƒdS)NÚfolderrQ)rrdrRrc)rrrrrS¿sz)ChildBrowserTreeItemTest.test_geticonnamecCs4|j|jjƒƒ|j|jjƒƒ|j|jjƒƒdS)N)r%rdrTrcrgre)rrrrrUÃsz*ChildBrowserTreeItemTest.test_isexpandablecCsX|j}tj}|jjƒ}|j|d|ƒ|t|ƒdƒ||djdƒ||jjƒgƒdS)Nrr.r1) rrrZrcrYrÚlenrEre)rrrfZ f1sublistrrrr[Ès z(ChildBrowserTreeItemTest.test_getsublistzidlelib.browser.file_opencCs>tjƒ}|j_|jjƒ|jƒ|jƒ|j|jjj ƒdS)N) rZMockr\Zgotolinerer^r_Zassert_called_withÚobjÚlineno)rr`ZgotorrrraÓs  z+ChildBrowserTreeItemTest.test_ondoubleclickN)r'r(r)r*rrrrPrSrUr[rr]rarrrrrb§s   rbc@seZdZdZdd„ZdS)ÚNestedChildrenTestzFTest that all the nodes in a nested tree are added to the BrowserTree.c Cs²tƒ}g}ddddddddd g }tj}|j|tƒ|tƒfƒxd|r |jƒ}|jƒ}|j|ƒ|j|j |j ƒƒ|j|j ƒd ƒ|j |j ƒ|gkƒ|j|j ƒq>W|j||ƒdS) Nr-zC0(base)r/r3r8zC1()r1r=r?rQrh)rQrh)rrrZÚextendr-r5ÚpopleftrYrrErOrRZassertIsrTÚappendr)rZqueueZ actual_namesZexpected_namesrfÚcbZsublistrrrÚ test_nestedàs" zNestedChildrenTest.test_nestedN)r'r(r)Ú__doc__rqrrrrrlÝsrlÚ__main__)Ú verbosity)r+r,).rrZidlelibrZ test.supportrZunittestrZidlelib.idle_test.mock_idlerÚ collectionsrZos.pathrrrZtkinterrZ idlelib.treer ZTestCaser r ÚmodulerLZFunctionr-Z_nest_functionr/r1Z _nest_classr3ZClassr5r8r:r=r?rDrBrIrArKrbrlr'ÚmainrrrrÚs>        -   56