Ë
    #´˜jä   ã                   ó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\                  d0¬1«       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    ú0lib/python3.12/idlelib/idle_test/test_browser.pyÚ
setUpClasszModuleBrowserTest.setUpClass   s<   € ä�ŒÜ“4ˆŒØ�‰×ÑÔÜ×&Ñ& s§x¡x´À$ÔGˆ�ó    c                 ó¨   — | j                   j                  «        | j                  j                  «        | j                  j	                  «        | `| ` y ©N)r   Úcloser   Úupdate_idletasksÚdestroyr   s    r   ÚtearDownClasszModuleBrowserTest.tearDownClass   s8   € à�‰�‰ŒØ�‰×!Ñ!Ô#Ø�‰×ÑÔØˆH�c‘fr   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   € Ø�W‰WˆØ×ÑˆÙ
ˆ2�7‰7”HÔÙ
Œ6�?‰?˜BÔØ×Ñ˜bŸg™g¤xÔ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   € Ø�W‰WˆØ�‰”b—g‘g×&Ñ&¤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,   € Ø�W‰WˆØ�[‰[‹]ˆØ×Ñ˜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   € Ø�W‰WˆÜ›ˆ�‰ŒÜ›&ˆ�‰ŒØ
�‰Œ
Ø�‰˜Ÿ™Ÿ™×-Ñ-Ô.Ø�‰˜Ÿ™Ÿ™×.Ñ.Ô/Ø�F‰FˆN˜BŸG™G™Or   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=   sk   € Øˆß ˆCØ—‘ #�Õ&Ø"˜V C 5˜>�Ü ×8Ñ8¸ÓB�Ø¤g×&LÑ&LÐL�Ø× Ñ  ¨Ô2÷	 'Ð&ñ !ß&Ð&ús   ž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�ÔÙ
ˆ3ˆq‰6�;‰;˜
Ô#Ù
ˆ3ˆq‰6�;‰;˜Ôä‘9Ô-¨vÓ6Ó7ˆÙ
ˆ3ˆq‰6�;‰;˜
Ô#ä‘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ž   € Ø×ÑˆÜ×.Ñ.ˆ	ä‘9œRŸ[™[Ó)Ó*ˆÙ
ˆ3””R�ÔÙ
ˆ3ˆq‰6�;‰;˜ÔÙ
ˆ3ˆq‰6�;‰;˜ÔÜ‘9œRŸ[™[Ó)Ó*ˆÙ
ˆ3ˆq‰6�;‰;˜Ôá
Œ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Ø×Ñ˜TŸX™X×2Ñ2Ó4´r¼2°hÔ?à+3ŒG�N‰NÔ(Ø)0ŒGÕ&øð ,4ŒG�N‰NÔ(Ø)0ŒGÕ&ú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†   € Ø�h‰hˆÜ¬¬B xÔ0ˆÔØ—^‘^Ó%‰
ˆˆdØÐØ×Ñ˜d¤G×$@Ñ$@ÔAØ×Ñ˜d¤G×$@Ñ$@Ô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|   € à�h‰hˆä�Z‰ZÐ(°uÖ=Ø×ÑÔØ×#Ñ#Ô%÷ >ô �Z‰ZÐ(°tÖ<Ø×ÑÔØ×)Ñ)¬%Ô0÷ =Ð<÷	 >Ð=ú÷ =Ð<ús   ¤!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ð €T‡Z�ZÐ+Ó,ñ	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˜˜
 C¡Jr   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Ó2°HÔ=Ø×Ñ˜Ÿ™×0Ñ0Ó2°HÕ=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   € Ø×ÑˆÜ×*Ñ*ˆà—K‘K×*Ñ*Ó,ˆ	Ø×Ñ˜i¨™l¨CÔ0Ù
Œ3ˆy‹>˜1ÔÙ
ˆ9�Q‰<×Ñ˜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_   € ä-1¯Y©Y«[Ð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ò
	)ð €T‡Z�ZÐ+Ó,ñ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œ"“g™s¤2›wÐ'Ô(ÙØ—‘“ˆBØ—m‘m“oˆGØ�L‰L˜Ô!Ø�M‰M˜"Ÿ'™' 2§:¡:£<Ô0Ø�M‰M˜"Ÿ.™.Ó*Ð,@ÔAØ�M‰M˜"Ÿ/™/Ó+¨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3ðl €Ø!�€ˆØ‡X�Xˆf�d˜V˜H e¨Q¸1€XÓ=€Ø×Ñ�r˜4  AÓ&€Ø‡^�^�B˜˜a  R DÓ)€Ø‡^�^�B˜˜a Ó#€Ø×Ñ�r˜4  AÓ&€Ø‡[�[�˜˜u b°R€[Ó8€Ø×Ñ�r˜4  RÓ(€Ø×Ñ�r˜4  RÓ(€Ø‡^�^�B˜˜b "Ó%€Ø BÑ'Ð ð €× Ñ Ð+¨VÔ 4Ø €× Ñ ˜2Ÿ;™;Ô 'ô3˜H×-Ñ-ô 3ô>11 × 1Ñ 1ô 11ôh28˜x×0Ñ0ô 28ôl7˜×*Ñ*ô 7ð4 ˆzÒØ€H‡M�M˜AÖð r   