a
    åze^<  ã                   @   sz  d dl mZ d dlZd dlmZ d dlmZmZ d dlZd dlm	Z	 d dl
mZ 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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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G dd „ d ejƒZG d!d"„ d"ejƒZG d#d$„ d$ejƒZed%krvejd&d'd( dS ))é    )ÚqueryN©Úrequires)ÚTkÚEND)Úmock)ÚVarc                   @   sB   e Zd ZG dd„ dƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú	QueryTestc                   @   s<   e Zd ZejjZejjZejjZdd„ Zdd„ Z	dd„ Z
dS )zQueryTest.Dummy_Queryc                 C   s&   t |d| _ddi| _d | _d| _d S )N©ÚvalueÚtextÚ F)r   ÚentryÚentry_errorÚresultÚ	destroyed©ÚselfZdummy_entry© r   ú2/usr/lib/python3.9/idlelib/idle_test/test_query.pyÚ__init__!   s    
zQueryTest.Dummy_Query.__init__c                 C   s   || j d< d S ©Nr   ©r   ©r   Úmessager   r   r   Ú	showerror&   s    zQueryTest.Dummy_Query.showerrorc                 C   s
   d| _ d S ©NT)r   ©r   r   r   r   Údestroy(   s    zQueryTest.Dummy_Query.destroyN)Ú__name__Ú
__module__Ú__qualname__r   ÚQueryÚentry_okÚokÚcancelr   r   r   r   r   r   r   ÚDummy_Query   s   r&   c                 C   sD   |   d¡}|  | ¡ d ¡ |  |j|jfd¡ |  d|jd ¡ d S )Nú ©NFz
blank liner   )r&   ÚassertEqualr#   r   r   ÚassertInr   ©r   Údialogr   r   r   Útest_entry_ok_blank+   s    
zQueryTest.test_entry_ok_blankc                 C   sD   |   d¡}| j}|| ¡ dƒ ||j|jfdƒ ||jd dƒ d S )Nú  good Úgoodr(   r   r   )r&   r)   r#   r   r   r   )r   r,   ÚEqualr   r   r   Útest_entry_ok_good1   s
    
zQueryTest.test_entry_ok_goodc                 C   sT   |   d¡}t ¡ |j_|  | ¡ d ¡ |  |jjj¡ |j`|  |j	|j
fd¡ d S )Nr   r(   )r&   r   ÚMockr   Z	focus_setr)   r$   Ú
assertTrueÚcalledr   r   r+   r   r   r   Útest_ok_blank8   s    
zQueryTest.test_ok_blankc                 C   s2   |   d¡}|  | ¡ d ¡ |  |j|jfd¡ d S )Nr/   )r/   T)r&   r)   r$   r   r   r+   r   r   r   Útest_ok_good@   s    
zQueryTest.test_ok_goodc                 C   s2   |   d¡}|  | ¡ d ¡ |  |j|jfd¡ d S )Nzdoes not matterr   )r&   r)   r%   r   r   r+   r   r   r   Útest_cancelE   s    
zQueryTest.test_cancelN)	r   r    r!   r&   r-   r1   r5   r6   r7   r   r   r   r   r	      s   r	   c                   @   s:   e Zd ZG dd„ dƒZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚSectionNameTestc                   @   s*   e Zd ZejjZdgZdd„ Zdd„ ZdS )z!SectionNameTest.Dummy_SectionNameÚusedc                 C   s   t |d| _ddi| _d S ©Nr
   r   r   ©r   r   r   r   r   r   r   r   Q   s    z*SectionNameTest.Dummy_SectionName.__init__c                 C   s   || j d< d S r   r   r   r   r   r   r   T   s    z+SectionNameTest.Dummy_SectionName.showerrorN)	r   r    r!   r   ÚSectionNamer#   Ú
used_namesr   r   r   r   r   r   ÚDummy_SectionNameN   s   r>   c                 C   s0   |   d¡}|  | ¡ d ¡ |  d|jd ¡ d S ©Nr'   zno namer   ©r>   r)   r#   r*   r   r+   r   r   r   Útest_blank_section_nameW   s    
z'SectionNameTest.test_blank_section_namec                 C   s0   |   d¡}|  | ¡ d ¡ |  d|jd ¡ d S )Nr9   Zuser   r@   r+   r   r   r   Útest_used_section_name\   s    
z&SectionNameTest.test_used_section_namec                 C   s0   |   d¡}|  | ¡ d ¡ |  d|jd ¡ d S )NZ goodgoodgoodgoodgoodgoodgoodgoodzlonger than 30r   r@   r+   r   r   r   Útest_long_section_namea   s    
z&SectionNameTest.test_long_section_namec                 C   s0   |   d¡}|  | ¡ d¡ |  |jd d¡ d S )Nr.   r/   r   r   )r>   r)   r#   r   r+   r   r   r   Útest_good_section_namef   s    
z&SectionNameTest.test_good_section_nameN)r   r    r!   r>   rA   rB   rC   rD   r   r   r   r   r8   K   s
   	r8   c                   @   s:   e Zd ZG dd„ dƒZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚModuleNameTestc                   @   s(   e Zd ZejjZdZdd„ Zdd„ ZdS )zModuleNameTest.Dummy_ModuleNamer   c                 C   s   t |d| _ddi| _d S r:   r;   r   r   r   r   r   r   s    z(ModuleNameTest.Dummy_ModuleName.__init__c                 C   s   || j d< d S r   r   r   r   r   r   r   u   s    z)ModuleNameTest.Dummy_ModuleName.showerrorN)	r   r    r!   r   Ú
ModuleNamer#   Útext0r   r   r   r   r   r   ÚDummy_ModuleNameo   s   rH   c                 C   s0   |   d¡}|  | ¡ d ¡ |  d|jd ¡ d S r?   ©rH   r)   r#   r*   r   r+   r   r   r   Útest_blank_module_namex   s    
z%ModuleNameTest.test_blank_module_namec                 C   s0   |   d¡}|  | ¡ d ¡ |  d|jd ¡ d S )NZ __name_xyz123_should_not_exist__z	not foundr   rI   r+   r   r   r   Útest_bogus_module_name}   s    
z%ModuleNameTest.test_bogus_module_namec                 C   s0   |   d¡}|  | ¡ d ¡ |  d|jd ¡ d S )NÚ	itertoolszsource-basedr   rI   r+   r   r   r   Útest_c_source_name‚   s    
z!ModuleNameTest.test_c_source_namec                 C   sd   |   d¡}|  | ¡  d¡¡ |  |jd d¡ |   d¡}|  | ¡  d¡¡ |  |jd d¡ d S )NÚidlelibú__init__.pyr   r   zidlelib.idlezidle.py)rH   r3   r#   Úendswithr)   r   r+   r   r   r   Útest_good_module_name‡   s    

z$ModuleNameTest.test_good_module_nameN)r   r    r!   rH   rJ   rK   rM   rQ   r   r   r   r   rE   l   s
   	rE   c                   @   s2   e Zd ZG dd„ dƒZdd„ Zdd„ Zdd„ Zd	S )
ÚGotoTestc                   @   s$   e Zd ZejjZdd„ Zdd„ ZdS )zGotoTest.Dummy_ModuleNamec                 C   s   t |d| _ddi| _d S r:   r;   r   r   r   r   r   •   s    z"GotoTest.Dummy_ModuleName.__init__c                 C   s   || j d< d S r   r   r   r   r   r   r   ˜   s    z#GotoTest.Dummy_ModuleName.showerrorN)r   r    r!   r   ÚGotor#   r   r   r   r   r   r   rH   “   s   rH   c                 C   s0   |   d¡}|  | ¡ d ¡ |  d|jd ¡ d S )NÚaznot a base 10 integerr   rI   r+   r   r   r   Útest_bogus_goto›   s    
zGotoTest.test_bogus_gotoc                 C   s0   |   d¡}|  | ¡ d ¡ |  d|jd ¡ d S )NÚ0znot a positive integerr   rI   r+   r   r   r   Útest_bad_goto    s    
zGotoTest.test_bad_gotoc                 C   s0   |   d¡}|  | ¡ d¡ |  |jd d¡ d S )NÚ1é   r   r   )rH   r)   r#   r   r+   r   r   r   Útest_good_goto¥   s    
zGotoTest.test_good_gotoN)r   r    r!   rH   rU   rW   rZ   r   r   r   r   rR      s   rR   c                   @   s"   e Zd ZG dd„ dƒZdd„ ZdS )ÚHelpsourceBrowsefileTestc                   @   s   e Zd ZejjZeƒ ZdS )z)HelpsourceBrowsefileTest.Dummy_HelpSourceN)r   r    r!   r   Ú
HelpSourceÚbrowse_filer   Úpathvarr   r   r   r   ÚDummy_HelpSource°   s   r_   c              	   C   s    |   ¡ }ddd„ dfddd„ tfddd„ dfddd„ tffD ]^\}}}|  ¡ < |j |¡ ||_| ¡  |  |j ¡ |¡ W d   ƒ q<1 s0    Y  q<d S )Nr   c                 S   s   dS ©Nr   r   ©rT   ÚbÚcr   r   r   Ú<lambda>»   ó    zBHelpsourceBrowsefileTest.test_file_replaces_path.<locals>.<lambda>c                 S   s   t S ©N©Ú__file__ra   r   r   r   rd   ¼   re   Zhtestc                 S   s   dS r`   r   ra   r   r   r   rd   ½   re   c                 S   s   t S rf   rg   ra   r   r   r   rd   ¾   re   )	r_   rh   ÚsubTestr^   ÚsetZaskfilenamer]   r)   Úget)r   r,   ÚpathÚfuncr   r   r   r   Útest_file_replaces_path´   s    ü
z0HelpsourceBrowsefileTest.test_file_replaces_pathN)r   r    r!   r_   rn   r   r   r   r   r[   ­   s   r[   c                   @   sL   e Zd ZG dd„ dƒZejZedd„ ƒZdd„ Z	dd„ Z
d	d
„ Zdd„ ZdS )ÚHelpsourcePathokTestc                   @   s&   e Zd ZejjZdd„ Zddd„ZdS )z%HelpsourcePathokTest.Dummy_HelpSourcec                 C   s   t |d| _ddi| _d S r:   )r   rl   Ú
path_error)r   Z
dummy_pathr   r   r   r   Ë   s    z.HelpsourcePathokTest.Dummy_HelpSource.__init__Nc                 C   s   || j d< d S r   )rp   )r   r   Zwidgetr   r   r   r   Î   s    z/HelpsourcePathokTest.Dummy_HelpSource.showerror)N)r   r    r!   r   r\   Úpath_okr   r   r   r   r   r   r_   É   s   r_   c                 C   s   | j t_d S rf   )Úorig_platformr   Úplatform©Úclsr   r   r   ÚtearDownClassÒ   s    z"HelpsourcePathokTest.tearDownClassc                 C   s0   |   d¡}|  | ¡ d ¡ |  d|jd ¡ d S )Nr'   zno help filer   )r_   r)   rq   r*   rp   r+   r   r   r   Útest_path_ok_blankÖ   s    
z'HelpsourcePathokTest.test_path_ok_blankc                 C   s4   |   td ¡}|  | ¡ d ¡ |  d|jd ¡ d S )Nzbad-bad-badz	not existr   )r_   rh   r)   rq   r*   rp   r+   r   r   r   Útest_path_ok_badÛ   s    z%HelpsourcePathokTest.test_path_ok_badc              	   C   st   |   d¡}| j}dD ]Z}|  ¡ > |j |¡ |  | ¡ |¡ |  |jd d¡ W d   ƒ q1 sd0    Y  qd S )Nr   )z
www.py.orgzhttp://py.orgr   )r_   r)   ri   rl   rj   rq   rp   )r   r,   r0   Úurlr   r   r   Útest_path_ok_webà   s    

z%HelpsourcePathokTest.test_path_ok_webc              	   C   s|   |   d¡}dD ]h\}}|  ¡ H |t_|j t¡ |  | ¡ |t ¡ |  |j	d d¡ W d   ƒ q1 sl0    Y  qd S )Nr   ))Údarwinúfile://)Úotherr   r   )
r_   ri   r   rs   rl   rj   rh   r)   rq   rp   )r   r,   rs   Úprefixr   r   r   Útest_path_ok_fileé   s    

z&HelpsourcePathokTest.test_path_ok_fileN)r   r    r!   r_   r   rs   rr   Úclassmethodrv   rw   rx   rz   r   r   r   r   r   ro   Æ   s   
	ro   c                   @   s"   e Zd ZG dd„ dƒZdd„ ZdS )ÚHelpsourceEntryokTestc                   @   s,   e Zd ZejjZi Zi Zdd„ Zdd„ Z	dS )z&HelpsourceEntryokTest.Dummy_HelpSourcec                 C   s   | j S rf   )Únamer   r   r   r   Úitem_okú   s    z.HelpsourceEntryokTest.Dummy_HelpSource.item_okc                 C   s   | j S rf   )rl   r   r   r   r   rq   ü   s    z.HelpsourceEntryokTest.Dummy_HelpSource.path_okN)
r   r    r!   r   r\   r#   r   rp   rƒ   rq   r   r   r   r   r_   ö   s
   r_   c              	   C   sb   |   ¡ }dD ]P\}}}|  ¡ . || |_|_|  | ¡ |¡ W d   ƒ q1 sR0    Y  qd S )N))NNN)Núdoc.txtN)ÚdocNN)r…   r„   )r…   r„   )r_   ri   r‚   rl   r)   r#   )r   r,   r‚   rl   r   r   r   r   Útest_entry_ok_helpsourceÿ   s
    
z.HelpsourceEntryokTest.test_entry_ok_helpsourceN)r   r    r!   r_   r†   r   r   r   r   r   ó   s   	r   c                   @   s2   e Zd ZG dd„ dƒZdd„ Zdd„ Zdd„ Zd	S )
ÚCustomRunCLIargsokTestc                   @   s$   e Zd ZejjZdd„ Zdd„ ZdS )z&CustomRunCLIargsokTest.Dummy_CustomRunc                 C   s   t |d| _ddi| _d S r:   r;   r   r   r   r   r     s    z/CustomRunCLIargsokTest.Dummy_CustomRun.__init__c                 C   s   || j d< d S r   r   r   r   r   r   r     s    z0CustomRunCLIargsokTest.Dummy_CustomRun.showerrorN)r   r    r!   r   Ú	CustomRunÚcli_args_okr   r   r   r   r   r   ÚDummy_CustomRun  s   rŠ   c                 C   s   |   d¡}|  | ¡ g ¡ d S )Nr'   )rŠ   r)   r‰   r+   r   r   r   Útest_blank_args  s    
z&CustomRunCLIargsokTest.test_blank_argsc                 C   s0   |   d¡}|  | ¡ d ¡ |  d|jd ¡ d S )Nz'no-closing-quotez
No closingr   )rŠ   r)   r‰   r*   r   r+   r   r   r   Útest_invalid_args  s    
z(CustomRunCLIargsokTest.test_invalid_argsc                 C   sH   g d¢}|   d |¡d ¡}|  | ¡ |dg ¡ |  |jd d¡ d S )N)z-nZ10z	--verbosez-pz/pathz--namer'   z
 "my name"zmy namer   r   )rŠ   Újoinr)   r‰   r   )r   Úargsr,   r   r   r   Útest_good_args   s    z%CustomRunCLIargsokTest.test_good_argsN)r   r    r!   rŠ   r‹   rŒ   r   r   r   r   r   r‡     s   r‡   c                   @   s"   e Zd ZG dd„ dƒZdd„ ZdS )ÚCustomRunEntryokTestc                   @   s&   e Zd ZejjZi Zeƒ Zdd„ Z	dS )z$CustomRunEntryokTest.Dummy_CustomRunc                 C   s   | j S rf   )Úcli_argsr   r   r   r   r‰   .  s    z0CustomRunEntryokTest.Dummy_CustomRun.cli_args_okN)
r   r    r!   r   rˆ   r#   r   r   Ú
restartvarr‰   r   r   r   r   rŠ   *  s   rŠ   c              
   C   s„   |   ¡ }dD ]r}|j |¡ ddgdg|fffD ]L\}}| j||d& ||_|  | ¡ |¡ W d   ƒ q01 sr0    Y  q0qd S )N>   FT)NNzmy arg)Úrestartr‘   )rŠ   r’   rj   ri   r‘   r)   r#   )r   r,   r“   r‘   r   r   r   r   Útest_entry_ok_customrun1  s    ÿz,CustomRunEntryokTest.test_entry_ok_customrunN)r   r    r!   rŠ   r”   r   r   r   r   r   '  s   r   c                   @   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 )ÚQueryGuiTestc                 C   sB   t dƒ tƒ  | _}| j ¡  tj|dddd| _t ¡ | j_	d S )NÚguiZTESTÚtestT©Ú_utest)
r   r   ÚrootÚwithdrawr   r"   r,   r   r2   r   )ru   rš   r   r   r   Ú
setUpClass@  s
    
zQueryGuiTest.setUpClassc                 C   s   | j `| ` | j ¡  | `d S rf   )r,   r   rš   rt   r   r   r   rv   H  s    
zQueryGuiTest.tearDownClassc                 C   s(   | j j dd¡ d | j _| j j ¡  d S )Nr   Úend)r,   r   Údeleter   r   Z
reset_mockr   r   r   r   ÚsetUpO  s    zQueryGuiTest.setUpc                 C   s>   | j }|j dd¡ |j ¡  |  |jd¡ |  |jj	¡ d S ©Nr   Úabc)
r,   r   ÚinsertÚ	button_okÚinvoker)   r   r3   r   r4   r+   r   r   r   Útest_click_okT  s
    
zQueryGuiTest.test_click_okc                 C   s0   | j }|j ¡  |  |jd ¡ |  |jj¡ d S rf   )r,   r£   r¤   r)   r   ZassertFalser   r4   r+   r   r   r   Útest_click_blank[  s    
zQueryGuiTest.test_click_blankc                 C   s>   | j }|j dd¡ |j ¡  |  |jd ¡ |  |jj	¡ d S r    )
r,   r   r¢   Zbutton_cancelr¤   r)   r   r3   r   r4   r+   r   r   r   Útest_click_cancela  s
    
zQueryGuiTest.test_click_cancelN)
r   r    r!   r€   rœ   rv   rŸ   r¥   r¦   r§   r   r   r   r   r•   >  s   

r•   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚSectionnameGuiTestc                 C   s   t dƒ d S ©Nr–   r   rt   r   r   r   rœ   k  s    zSectionnameGuiTest.setUpClassc                 C   sl   t ƒ }| ¡  tj|dddhdd}| j}|  |jdh¡ |j dd¡ |j 	¡  |  |j
d¡ | ¡  d S )NÚTÚtr¡   Tr˜   r   Zokay)r   r›   r   r<   r)   r=   r   r¢   r£   r¤   r   r   )r   rš   r,   r0   r   r   r   Útest_click_section_nameo  s    
z*SectionnameGuiTest.test_click_section_nameN)r   r    r!   r€   rœ   r¬   r   r   r   r   r¨   i  s   
r¨   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚModulenameGuiTestc                 C   s   t dƒ d S r©   r   rt   r   r   r   rœ   }  s    zModulenameGuiTest.setUpClassc                 C   sj   t ƒ }| ¡  tj|ddddd}|  |jd¡ |  |j ¡ d¡ |j 	¡  |  
|j d¡¡ | ¡  d S )Nrª   r«   rN   Tr˜   rO   )r   r›   r   rF   r)   rG   r   rk   r£   r¤   r3   r   rP   r   ©r   rš   r,   r   r   r   Útest_click_module_name  s    
z(ModulenameGuiTest.test_click_module_nameN©r   r    r!   r€   rœ   r¯   r   r   r   r   r­   {  s   
r­   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚGotoGuiTestc                 C   s   t dƒ d S r©   r   rt   r   r   r   rœ   Ž  s    zGotoGuiTest.setUpClassc                 C   sR   t ƒ }| ¡  tj|dddd}|j dd¡ |j ¡  |  |j	d¡ | 
¡  d S )Nrª   r«   Tr˜   r   Z22é   )r   r›   r   rS   r   r¢   r£   r¤   r)   r   r   r®   r   r   r   r¯   ’  s    
z"GotoGuiTest.test_click_module_nameNr°   r   r   r   r   r±   Œ  s   
r±   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚHelpsourceGuiTestc                 C   s   t dƒ d S r©   r   rt   r   r   r   rœ   ž  s    zHelpsourceGuiTest.setUpClassc                 C   s„   t ƒ }| ¡  tj|ddtdd}| j}||j ¡ dƒ ||j ¡ tƒ |j	 
¡  tjdkr`dnd}||jd|t fƒ | ¡  d S )Nrª   Z__test__T)ZmenuitemÚfilepathr™   r{   r|   r   )r   r›   r   r\   rh   r)   r   rk   rl   r£   r¤   Úsysrs   r   r   )r   rš   r,   r0   r~   r   r   r   Útest_click_help_source¢  s    
ÿ
z(HelpsourceGuiTest.test_click_help_sourceN)r   r    r!   r€   rœ   r¶   r   r   r   r   r³   œ  s   
r³   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚCustomRunGuiTestc                 C   s   t dƒ d S r©   r   rt   r   r   r   rœ   ²  s    zCustomRunGuiTest.setUpClassc                 C   sp   t ƒ }| ¡  tj|dddgdd}|  |j ¡ d¡ |j td¡ |j	 
¡  |  |jg d¢df¡ | ¡  d S )	NZTitlerT   úb=1T)r‘   r™   za b=1z c)rT   r¸   rc   )r   r›   r   rˆ   r)   r   rk   r¢   r   r£   r¤   r   r   r®   r   r   r   Útest_click_args¶  s    ÿ
z CustomRunGuiTest.test_click_argsN)r   r    r!   r€   rœ   r¹   r   r   r   r   r·   °  s   
r·   Ú__main__é   F)Ú	verbosityÚexit)rN   r   ZunittestZtest.supportr   Útkinterr   r   rµ   r   Zidlelib.idle_test.mock_tkr   ZTestCaser	   r8   rE   rR   r[   ro   r   r‡   r   r•   r¨   r­   r±   r³   r·   r   Úmainr   r   r   r   Ú<module>   s.   3!$-+
