B
    v9aí5  ã               @   sR  d dl mZ d dl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
 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rNejd"d#d$ dS )%é    )ÚqueryN)Úrequires)ÚTk)Ú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)ÚselfÚdummy_entry© r   ú /usr/lib/python3.7/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 )Nz  good Úgood)NFr	   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
   )NF)r   r   ÚMockr   Z	focus_setr    r   Ú
assertTrueÚcalledr   r   )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   r   Útest_ok_good@   s    
zQueryTest.test_ok_goodc             C   s2   |   d¡}|  | ¡ d ¡ |  |j|jfd¡ d S )Nzdoes not matter)NT)r   r    r   r   r   )r   r"   r   r   r   Útest_cancelE   s    
zQueryTest.test_cancelN)	r   r   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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 )N)r   r	   r
   )r   r   r   )r   r   r   r   r   r   Q   s    z*SectionNameTest.Dummy_SectionName.__init__c             C   s   || j d< d S )Nr	   )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   r1   c             C   s0   |   d¡}|  | ¡ d ¡ |  d|jd ¡ d S )Nr   zno namer	   )r1   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 )Nr.   Zuser	   )r1   r    r   r!   r   )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	   )r1   r    r   r!   r   )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 )Nz  good r$   r	   r
   )r1   r    r   r   )r   r"   r   r   r   Útest_good_section_namef   s    
z&SectionNameTest.test_good_section_nameN)r   r   r   r1   r2   r3   r4   r5   r   r   r   r   r-   K   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 )Ú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 )N)r   r	   r
   )r   r   r   )r   r   r   r   r   r   r   s    z(ModuleNameTest.Dummy_ModuleName.__init__c             C   s   || j d< d S )Nr	   )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   r9   c             C   s0   |   d¡}|  | ¡ d ¡ |  d|jd ¡ d S )Nr   zno namer	   )r9   r    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	   )r9   r    r   r!   r   )r   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	   )r9   r    r   r!   r   )r   r"   r   r   r   Útest_c_source_name‚   s    
z!ModuleNameTest.test_c_source_namec             C   s4   |   d¡}|  | ¡  d¡¡ |  |jd d¡ d S )NÚidlelibz__init__.pyr	   r
   )r9   r(   r   Úendswithr    r   )r   r"   r   r   r   Útest_good_module_name‡   s    
z$ModuleNameTest.test_good_module_nameN)r   r   r   r9   r:   r;   r=   r@   r   r   r   r   r6   l   s
   	r6   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   rE   c          
   C   s   |   ¡ }x‚ddd„ dfddd„ tfddd„ dfddd„ tffD ]J\}}}|  ¡ 2 |j |¡ ||_| ¡  |  |j ¡ |¡ W d Q R X q>W d S )Nr
   c             S   s   dS )Nr
   r   )ÚaÚbÚcr   r   r   Ú<lambda>   ó    zBHelpsourceBrowsefileTest.test_file_replaces_path.<locals>.<lambda>c             S   s   t S )N)Ú__file__)rF   rG   rH   r   r   r   rI   ž   rJ   Zhtestc             S   s   dS )Nr
   r   )rF   rG   rH   r   r   r   rI   Ÿ   rJ   c             S   s   t S )N)rK   )rF   rG   rH   r   r   r   rI       rJ   )	rE   rK   ÚsubTestrD   ÚsetZaskfilenamerC   r    Úget)r   r"   ÚpathÚfuncr   r   r   r   Útest_file_replaces_path–   s    
z0HelpsourceBrowsefileTest.test_file_replaces_pathN)r   r   r   rE   rQ   r   r   r   r   rA      s   rA   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 )N)r   r	   r
   )r   rO   Ú
path_error)r   Z
dummy_pathr   r   r   r   ­   s    z.HelpsourcePathokTest.Dummy_HelpSource.__init__Nc             C   s   || j d< d S )Nr	   )rS   )r   r   Zwidgetr   r   r   r   °   s    z/HelpsourcePathokTest.Dummy_HelpSource.showerror)N)r   r   r   r   rB   Úpath_okr   r   r   r   r   r   rE   «   s   rE   c             C   s   | j t_d S )N)Ú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	   )rE   r    rT   r!   rS   )r   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	   )rE   rK   r    rT   r!   rS   )r   r"   r   r   r   Útest_path_ok_bad½   s    z%HelpsourcePathokTest.test_path_ok_badc          
   C   sd   |   d¡}| j}xNdD ]F}|  ¡ 4 |j |¡ |  | ¡ |¡ |  |jd d¡ W d Q R X qW d S )Nr
   )z
www.py.orgzhttp://py.orgr	   )rE   r    rL   rO   rM   rT   rS   )r   r"   r%   Zurlr   r   r   Útest_path_ok_webÂ   s    


z%HelpsourcePathokTest.test_path_ok_webc          
   C   sl   |   d¡}x\dD ]T\}}|  ¡ > |t_|j t¡ |  | ¡ |t ¡ |  |j	d d¡ W d Q R X qW d S )Nr
   ))Údarwinzfile://)Úotherr
   r	   )
rE   rL   r   rV   rO   rM   rK   r    rT   rS   )r   r"   rV   Úprefixr   r   r   Útest_path_ok_fileË   s    

z&HelpsourcePathokTest.test_path_ok_fileN)r   r   r   rE   r   rV   rU   ÚclassmethodrX   rY   rZ   r[   r_   r   r   r   r   rR   ¨   s   	rR   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 )N)Úname)r   r   r   r   Úitem_okÜ   s    z.HelpsourceEntryokTest.Dummy_HelpSource.item_okc             C   s   | j S )N)rO   )r   r   r   r   rT   Þ   s    z.HelpsourceEntryokTest.Dummy_HelpSource.path_okN)
r   r   r   r   rB   r   r   rS   rc   rT   r   r   r   r   rE   Ø   s
   rE   c          
   C   sR   |   ¡ }xDdD ]<\}}}|  ¡ $ || |_|_|  | ¡ |¡ W d Q R X qW d S )N))NNN)Nzdoc.txtN)ÚdocNN)rd   zdoc.txt)rd   zdoc.txt)rE   rL   rb   rO   r    r   )r   r"   rb   rO   r   r   r   r   Útest_entry_ok_helpsourceá   s
    
z.HelpsourceEntryokTest.test_entry_ok_helpsourceN)r   r   r   rE   re   r   r   r   r   ra   Õ   s   	ra   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 )N)r   r	   r
   )r   r   r   )r   r   r   r   r   r   ó   s    z/CustomRunCLIargsokTest.Dummy_CustomRun.__init__c             C   s   || j d< d S )Nr	   )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   ri   c             C   s   |   d¡}|  | ¡ g ¡ d S )Nr   )ri   r    rh   )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	   )ri   r    rh   r!   r   )r   r"   r   r   r   Útest_invalid_argsý   s    
z(CustomRunCLIargsokTest.test_invalid_argsc             C   sP   ddddddg}|   d |¡d ¡}|  | ¡ |d	g ¡ |  |jd
 d¡ d S )Nz-nZ10z	--verbosez-pz/pathz--namer   z
 "my name"zmy namer	   r
   )ri   Újoinr    rh   r   )r   Úargsr"   r   r   r   Útest_good_args  s    z%CustomRunCLIargsokTest.test_good_argsN)r   r   r   ri   rj   rk   rn   r   r   r   r   rf   î   s   rf   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 )N)Úcli_args)r   r   r   r   rh     s    z0CustomRunEntryokTest.Dummy_CustomRun.cli_args_okN)
r   r   r   r   rg   r   r   r   Ú
restartvarrh   r   r   r   r   ri     s   ri   c             C   sx   |   ¡ }xjdD ]b}|j |¡ xPddgdg|fffD ]8\}}| j||d ||_|  | ¡ |¡ W d Q R X q4W qW d S )N>   FT)NNzmy arg)Úrestartrp   )ri   rq   rM   rL   rp   r    r   )r   r"   rr   rp   r   r   r   r   Útest_entry_ok_customrun  s    
z,CustomRunEntryokTest.test_entry_ok_customrunN)r   r   r   ri   rs   r   r   r   r   ro   	  s   ro   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TESTZtestT)Ú_utest)
r   r   ÚrootÚwithdrawr   r   r"   r   r'   r   )rW   rw   r   r   r   Ú
setUpClass"  s
    
zQueryGuiTest.setUpClassc             C   s   | j `| ` | j ¡  | `d S )N)r"   r   rw   )rW   r   r   r   rX   *  s    
zQueryGuiTest.tearDownClassc             C   s(   | j j dd¡ d | j _| j j ¡  d S )Nr   Úend)r"   r   Údeleter   r   Z
reset_mock)r   r   r   r   ÚsetUp1  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   r(   r   r)   )r   r"   r   r   r   Útest_click_ok6  s
    
zQueryGuiTest.test_click_okc             C   s0   | j }|j ¡  |  |jd ¡ |  |jj¡ d S )N)r"   r   r€   r    r   ZassertFalser   r)   )r   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 )Nr   r}   )
r"   r   r~   Zbutton_cancelr€   r    r   r(   r   r)   )r   r"   r   r   r   Útest_click_cancelC  s
    
zQueryGuiTest.test_click_cancelN)
r   r   r   r`   ry   rX   r|   r   r‚   rƒ   r   r   r   r   rt      s   rt   c               @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚSectionnameGuiTestc             C   s   t dƒ d S )Nru   )r   )rW   r   r   r   ry   M  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}   T)rv   r   Úokay)r   rx   r   r/   r    r0   r   r~   r   r€   r   r   )r   rw   r"   r%   r   r   r   Útest_click_section_nameQ  s    
z*SectionnameGuiTest.test_click_section_nameN)r   r   r   r`   ry   rˆ   r   r   r   r   r„   K  s   r„   c               @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚModulenameGuiTestc             C   s   t dƒ d S )Nru   )r   )rW   r   r   r   ry   _  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†   r>   T)rv   z__init__.py)r   rx   r   r7   r    r8   r   rN   r   r€   r(   r   r?   r   )r   rw   r"   r   r   r   Útest_click_module_namec  s    
z(ModulenameGuiTest.test_click_module_nameN)r   r   r   r`   ry   rŠ   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 )Nru   )r   )rW   r   r   r   ry   p  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Úfilepathrv   r\   zfile://r
   )r   rx   r   rB   rK   r    r   rN   rO   r   r€   ÚsysrV   r   r   )r   rw   r"   r%   r^   r   r   r   Útest_click_help_sourcet  s    


z(HelpsourceGuiTest.test_click_help_sourceN)r   r   r   r`   ry   rŽ   r   r   r   r   r‹   n  s   r‹   c               @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚCustomRunGuiTestc             C   s   t dƒ d S )Nru   )r   )rW   r   r   r   ry   „  s    zCustomRunGuiTest.setUpClassc             C   sV   t ƒ }| ¡  tj|ddd}|j dd¡ |j ¡  |  |j	dgdf¡ | 
¡  d S )NZTitleT)rv   r   r‡   )r   rx   r   rg   r   r~   r   r€   r    r   r   )r   rw   r"   r   r   r   Útest_click_argsˆ  s    
z CustomRunGuiTest.test_click_argsN)r   r   r   r`   ry   r   r   r   r   r   r   ‚  s   r   Ú__main__é   F)Ú	verbosityÚexit)r>   r   ZunittestZtest.supportr   Ztkinterr   r   r   Zidlelib.idle_test.mock_tkr   ZTestCaser   r-   r6   rA   rR   ra   rf   ro   rt   r„   r‰   r‹   r   r   Úmainr   r   r   r   Ú<module>   s*   3!#-+
