B
    v9a[&  ã               @   s°   d Z ddlZddlmZmZ ddlmZ ddlmZm	Z	 ddl
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 G dd	„ d	ƒZG d
d„ dejƒZedkr¬ejdd dS )z Test autocomplete, coverage 87%.é    N)ÚMockÚpatch)Úrequires)ÚTkÚText)ÚFunc)ÚEventc               @   s   e Zd Zdd„ ZdS )ÚDummyEditwinc             C   s"   || _ || _d| _d| _d| _d S )Né   z>>>)ÚrootÚtextZindentwidthZtabwidthZprompt_last_line)Úselfr   r   © r   ú'/usr/lib/python3.7/test_autocomplete.pyÚ__init__   s
    zDummyEditwin.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r	      s   r	   c               @   s„   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d„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚAutoCompleteTestc             C   s:   t dƒ tƒ | _| j ¡  t| jƒ| _t| j| jƒ| _d S )NZgui)r   r   r   Zwithdrawr   r   r	   Úeditor)Úclsr   r   r   Ú
setUpClass   s
    
zAutoCompleteTest.setUpClassc             C   s$   | ` | `| j ¡  | j ¡  | `d S )N)r   r   r   Zupdate_idletasksZdestroy)r   r   r   r   ÚtearDownClass#   s    

zAutoCompleteTest.tearDownClassc             C   s    | j  dd¡ t | j¡| _d S )Nz1.0Úend)r   ÚdeleteÚacÚAutoCompleter   Úautocomplete)r   r   r   r   ÚsetUp*   s    zAutoCompleteTest.setUpc             C   s   |   | jj| j¡ d S )N)ÚassertEqualr   Zeditwinr   )r   r   r   r   Ú	test_init.   s    zAutoCompleteTest.test_initc             C   s   | j  ¡ }|  |tj¡ d S )N)r   Ú_make_autocomplete_windowZassertIsInstanceÚacwZAutoCompleteWindow)r   Ztestwinr   r   r   Útest_make_autocomplete_window1   s    
z.AutoCompleteTest.test_make_autocomplete_windowc             C   s*   | j  ¡ | j _| j  ¡  |  | j j¡ d S )N)r   r!   ZautocompletewindowÚ_remove_autocomplete_windowÚassertIsNone)r   r   r   r   Útest_remove_autocomplete_window5   s    
z0AutoCompleteTest.test_remove_autocomplete_windowc             C   s,   t ƒ }|| j_| j d¡ |  |jd¡ d S )NÚevent)TFT)r   r   Úopen_completionsZforce_open_completions_eventr   Úargs)r   Úo_csr   r   r   Ú!test_force_open_completions_event;   s    z2AutoCompleteTest.test_force_open_completions_eventc             C   sŠ   | j }| j}| jj}tƒ }||_|dƒ ||jd ƒ | j dd¡ |dƒ ||jdƒ | j dd¡ | j dd¡ |dƒ ||jdƒ d S )Nr'   z1.0zre.)FFFé   r   z"./Lib/)FFFé   )	r   r   Ztry_open_completions_eventr   Ú_open_completions_laterr)   r   Úinsertr   )r   ÚEqualr   ZtrycompletionsZo_c_lr   r   r   Útest_try_open_completions_eventB   s    z0AutoCompleteTest.test_try_open_completions_eventc             C   sÐ   | j }| j}tdd}|  | |¡¡ |`| j dd¡ |  | |¡¡ | j dd¡ | j dd¡ || j |¡dƒ | 	¡  t
ƒ }||_|| j |¡d ƒ ||jdƒ d|_|| j |¡dƒ ||jdƒ d S )	NT)Úmc_statez1.0z        """Docstring.
    r   zre.Úbreak)FTT)r   r   r   r%   Zautocomplete_eventr2   r   r/   r   r$   r   r(   r)   Úresult)r   r0   r   Zevr*   r   r   r   Útest_autocomplete_eventX   s$    
z(AutoCompleteTest.test_autocomplete_eventc             C   sŒ   | j }d |_| dddtj¡ |j}|  | d¡¡ | dddtj¡ |  || j	j
 dd¡¡ |j}|  | d¡ox||k¡ | j |¡ d S )NFÚafterÚinfo)r   Ú_delayed_completion_idr.   r   ÚCOMPLETE_ATTRIBUTESÚ
assertTrueÚ
startswithÚCOMPLETE_FILESÚassertNotInr   ZtkZcallr   Zafter_cancel)r   ÚacpZcb1Zcb2r   r   r   Útest_open_completions_laterw   s    z,AutoCompleteTest.test_open_completions_laterc             C   s€   | j }tƒ |_d|_| j d¡|_| ddd¡ |  |j¡ |  	|jj
d¡ | j d¡|_| dddtj¡ |  	|jjd¡ d S )	Nr6   z	insert+1cr,   r-   é   r   r/   )r,   r-   r@   r-   )r   r   r(   r8   r   ÚindexZ_delayed_completion_indexZ_delayed_open_completionsr%   r   Zcalledr   r<   r)   )r   r>   r   r   r   Útest_delayed_open_completions†   s    z.AutoCompleteTest.test_delayed_open_completionsc             C   sš   | j  dd¡ |  | j ddd¡¡ | j  dd¡ | j  dd¡ | j  dd¡ |  | j ddd¡¡ | j  dd¡ |  | j ddd¡¡ | j  dd¡ d S )Nz1.0ZprFTr   z"tú")r   r/   r:   r   r(   r   ZassertFalse)r   r   r   r   Útest_open_completions—   s    z&AutoCompleteTest.test_open_completionsc          	   C   sö  | j }| j  dtj¡\}}tjtjkr2|  d|¡ | dtj¡\}}|  t|ƒt|ƒ¡ |  	t
tdd„ |ƒƒ¡ |  	ttdd„ |ƒƒ¡ t dddd	gi¡@ | dtj¡\}}|  |dd	g¡ |  d
|¡ |  d|¡ W d Q R X tƒ }tƒ |_t dd|i¡b | dtj¡\}}|  d|¡ |  d|¡ |  |dd„ tt|ƒƒD ƒ¡ |  |tt|ƒƒ¡ W d Q R X dd„ }t td|¡n | dtj¡\}}|  |ddg¡ |  |dddg¡ | dtj¡\}}|  |ddg¡ |  |dddg¡ W d Q R X d S )NÚ r   c             S   s
   |   d¡S )NÚ_)r;   )Úxr   r   r   Ú<lambda>º   ó    z9AutoCompleteTest.test_fetch_completions.<locals>.<lambda>c             S   s
   |   d¡S )NrF   )r;   )rG   r   r   r   rH   »   rI   z__main__.__dict__Ú__all__ÚaÚbr   ÚsumÚfooÚ_privatec             S   s    g | ]}|d d… dkr|‘qS )Nr,   rF   r   )Ú.0Úir   r   r   ú
<listcomp>Ë   s    z;AutoCompleteTest.test_fetch_completions.<locals>.<listcomp>c             S   s   | dkrdddgS dddgS )NÚ.rN   Úbarz.hiddenÚmontyÚpythonr   )Úpathr   r   r   Ú_listdirÏ   s    
z9AutoCompleteTest.test_fetch_completions.<locals>._listdirÚlistdirrT   z.hiddenú~rU   rV   )r   Zfetch_completionsr   r9   Ú__main__Ú__file__r=   Z
assertLessÚlenr:   ÚallÚfilterÚanyr   Údictr   ZassertInr   rO   ÚsortedÚdirÚobjectÚosr<   )r   r   ZsmallZlargeÚsrL   ÚmockrX   r   r   r   Útest_fetch_completions«   s<    z'AutoCompleteTest.test_fetch_completionsc          
   C   sÂ   | j }| j}|| j  d¡tƒ tƒ }t dd|i¡ || d¡|ƒ W d Q R X dddœ}t dd|i¡ || d¡|ƒ W d Q R X t di ¡& |  t¡ | d	¡ W d Q R X W d Q R X d S )
NÚintzsys.modulesZtempfileé
   é   )rN   rT   z__main__.__dict__ÚdZ	not_exist)	r   r   Z
get_entityri   r   r   ra   ZassertRaisesÚ	NameError)r   r   r0   rg   Zdir   r   r   Útest_get_entityÞ   s    
z AutoCompleteTest.test_get_entityN)r   r   r   Úclassmethodr   r   r   r    r#   r&   r+   r1   r5   r?   rB   rD   rh   rn   r   r   r   r   r      s   3r   r[   r-   )Ú	verbosity)Ú__doc__ZunittestZunittest.mockr   r   Ztest.supportr   Ztkinterr   r   re   r[   Zidlelib.autocompleter   r   Zidlelib.autocomplete_wZautocomplete_wr"   Zidlelib.idle_test.mock_idler   Zidlelib.idle_test.mock_tkr   r	   ZTestCaser   r   Úmainr   r   r   r   Ú<module>   s   	 ^