a 9êdgã@sœdZddlmZddlmZddlZddlmZddlmZddl m Z ddl Z ddl Z ddlmZdd lmZGd d „d ejƒZe Zd \ZZe ed dged¡Ze edd¡Ze edddg¡Ze edd¡Ze edd¡Ze eded¡Z e e dd¡Z!e e!dd¡Z"e e dd ¡Z#ee d!œZ$e %e$d"¡e %ej&¡Gd#d$„d$ejƒZ'Gd%d&„d&ejƒZ(Gd'd(„d(ejƒZ)Gd)d*„d*ejƒZ*e+d+kr˜ej,d,d-dS).zTest browser, coverage 90%.é)Úbrowser)ÚrequiresN)Úmock)ÚFunc)Údeque)ÚTk)ÚTreeNodec@sDeZdZedd„ƒZedd„ƒZdd„Zdd„Zd d „Zd d „Z d S)ÚModuleBrowserTestcCs2tdƒtƒ|_|j ¡tj|jtdd|_dS)NZguiT)Z_utest)rrÚrootZwithdrawrZ ModuleBrowserÚ__file__Úmb©Úcls©rú:/usr/local/lib/python3.9/idlelib/idle_test/test_browser.pyÚ setUpClasss zModuleBrowserTest.setUpClasscCs*|j ¡|j ¡|j ¡|`|`dS©N)r Úcloser Zupdate_idletasksÚdestroyr rrrÚ tearDownClasss   zModuleBrowserTest.tearDownClasscCsB|j}|j}||jtƒ|tjiƒ| |jt¡|  t j ¡dSr) r Ú assertEqualÚpathr ÚpyclbrZ_modulesÚassertIsInstanceÚnoderZassertIsNotNonerZ file_open)Úselfr ÚeqrrrÚ test_init!s   zModuleBrowserTest.test_initcCs6|j}| tj t¡|j ¡¡| |j  ¡d¡dS)NzModule Browser) r ÚassertInÚosrÚbasenamer ÚtopÚtitlerZiconname©rr rrrÚ test_settitle)szModuleBrowserTest.test_settitlecCs |j}| ¡}| |tj¡dSr)r ÚrootnoderrÚModuleBrowserTreeItem)rr ZrnrrrÚ test_rootnode.szModuleBrowserTest.test_rootnodecCsR|j}tƒ|j_tƒ|j_| ¡| |jjj¡| |jjj¡|j`|j`dSr)r rr!rrrÚ assertTrueZcalledr#rrrÚ test_close3s  zModuleBrowserTest.test_closeN) Ú__name__Ú __module__Ú __qualname__Ú classmethodrrrr$r'r)rrrrr s  r )Útestztest.pyÚC0ÚbaseéÚF1éÚC1éÚÚC2éÚF3é Úf0é Úf1é Úf2é Úc1é)r/r;r.c@seZdZdd„Zdd„ZdS)ÚTransformChildrenTestcCs‚|j}tj}t|tdƒƒ}||ttgƒ||djdƒ||djdƒt|tdƒƒ}||djdƒt|tdƒƒ}||gƒdS)Nr.rúC0(base)r1r;zdifferent name)rrÚtransform_childrenÚlistÚmock_pyclbr_treer/r;Úname©rrZ transformZtclrrrÚ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)Nrr2r1úC1()) rrrErFr/Úchildrenr2r4rHr;r=rArIrrrÚtest_transform_node_childrendsz2TransformChildrenTest.test_transform_node_childrenN)r*r+r,rJrMrrrrrCSsrCc@sZeZdZedd„ƒZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z e   d¡dd„ƒZ dS)ÚModuleBrowserTreeItemTestcCst t¡|_dSr)rr&ÚfnameÚmbtr rrrrtsz$ModuleBrowserTreeItemTest.setUpClasscCs| |jjt¡dSr)rrPÚfilerO©rrrrrxsz#ModuleBrowserTreeItemTest.test_initcCs| |j ¡t¡dSr)rrPÚGetTextrOrRrrrÚ test_gettext{sz&ModuleBrowserTreeItemTest.test_gettextcCs| |j ¡d¡dS)NÚpython)rrPÚ GetIconNamerRrrrÚtest_geticonname~sz*ModuleBrowserTreeItemTest.test_geticonnamecCs| |j ¡¡dSr)r(rPÚ IsExpandablerRrrrÚtest_isexpandablesz+ModuleBrowserTreeItemTest.test_isexpandablecCsjtjj}tj}ttdtj_tttgdt_z(| |j   ¡ttg¡W|tj_|t_n|tj_|t_0dS)N©Úresult) rrZ readmodule_exrErrGr;r/rrPÚ listchildren)rZsave_rexZsave_tcrrrÚtest_listchildren„sÿz+ModuleBrowserTreeItemTest.test_listchildrencCsb|j}tttgd|_| ¡\}}|`| |tj¡| |tj¡|  |j d¡|  |j d¡dS)NrZr;rD) rPrr;r/r\Ú GetSubListrrÚChildBrowserTreeItemrrH)rrPZsub0Zsub1rrrÚtest_getsublists z)ModuleBrowserTreeItemTest.test_getsublistúidlelib.browser.file_opencCs|j}tjddd | ¡| ¡Wdƒn1s:0Ytjddd*| ¡| ¡| t¡Wdƒn1s‚0YdS)Nzos.path.existsF)Ú return_valueT)rPrÚpatchÚ OnDoubleClickZassert_not_calledÚ assert_calledZ called_withrO)rÚfopenrPrrrÚtest_ondoubleclick™s&z,ModuleBrowserTreeItemTest.test_ondoubleclickN)r*r+r,r-rrrTrWrYr]r`rrcrgrrrrrNrs   rNc@s^eZdZedd„ƒZedd„ƒZdd„Zdd„Zd d „Zd d „Z d d„Z e   d¡dd„ƒZ dS)ÚChildBrowserTreeItemTestcCs(tj}|tƒ|_|tƒ|_|tƒ|_dSr)rr_r=Úcbt_f1r4Úcbt_C1r2Úcbt_F1)rÚCBTrrrr©s  z#ChildBrowserTreeItemTest.setUpClasscCs|`|`|`dSr)rjrirkr rrrr°sz&ChildBrowserTreeItemTest.tearDownClasscCsB|j}||jjdƒ| |jj¡||jjdƒ| |jj¡dS)NrKr=)rrjrHÚ assertFalseZ isfunctionrir()rrrrrr´s z"ChildBrowserTreeItemTest.test_initcCs(| |j ¡d¡| |j ¡d¡dS)Nz class C1()z def f1(...))rrjrSrirRrrrrT»sz%ChildBrowserTreeItemTest.test_gettextcCs(| |j ¡d¡| |j ¡d¡dS)NÚfolderrU)rrjrVrirRrrrrW¿sz)ChildBrowserTreeItemTest.test_geticonnamecCs4| |j ¡¡| |j ¡¡| |j ¡¡dSr)r(rjrXrirmrkrRrrrrYÃsz*ChildBrowserTreeItemTest.test_isexpandablecCsX|j}tj}|j ¡}| |d|¡|t|ƒdƒ||djdƒ||j ¡gƒdS)Nrr1r?) rrr_rir^rÚlenrHrk)rrrlZ f1sublistrrrr`Ès z(ChildBrowserTreeItemTest.test_getsublistracCs>t ¡}|j_|j ¡| ¡| ¡| |jjj ¡dSr) rZMockrbZgotolinerkrdreZassert_called_withÚobjÚlineno)rrfZgotorrrrgÓs  z+ChildBrowserTreeItemTest.test_ondoubleclickN)r*r+r,r-rrrrTrWrYr`rrcrgrrrrrh§s   rhc@seZdZdZdd„ZdS)ÚNestedChildrenTestzFTest that all the nodes in a nested tree are added to the BrowserTree.cCs tƒ}g}gd¢}tj}| |tƒ|tƒf¡|r| ¡}| ¡}| |¡| |j |  ¡¡| |  ¡d¡|  |  ¡|gk¡| |j ¡q.| ||¡dS)N) r;rDr=rAr2rKr?r7r9)rUrn)rrr_Úextendr;r/Úpopleftr^rrHrSrVZassertIsrXÚappendr)rÚqueueZ actual_namesZexpected_namesrlÚcbZsublistrrrÚ test_nestedàs zNestedChildrenTest.test_nestedN)r*r+r,Ú__doc__rxrrrrrrÝsrrÚ__main__é)Ú verbosity)-ryZidlelibrZ test.supportrZunittestrZidlelib.idle_test.mock_idlerÚ collectionsrZos.pathrrÚtkinterrZ idlelib.treerZTestCaser r ÚmodulerOZClassr/Z_nest_functionr2Z _nest_classr4r7r9ZFunctionr;r=r?rArGrErLrCrNrhrrr*ÚmainrrrrÚs>       -   56