B
    v9aq   ã               @   s–   d Z ddlmZ ddlZddlmZ edƒ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZ ejZejZG d	d
„ d
ejƒZedkr’ejdd dS )zTest replace, coverage 78%.é    )ÚReplaceDialogN)ÚrequiresZgui)ÚTkÚText)ÚMock)ÚMboxc               @   st   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S )ÚReplaceDialogTestc             C   sz   t ƒ | _| j ¡  tt_t | j¡| _t| j| jƒ| _	dd„ | j	_
tƒ | j	_t| jƒ| _tƒ | j_tƒ | j_| j| j	_d S )Nc               S   s   d S )N© r	   r	   r	   ú"/usr/lib/python3.7/test_replace.pyÚ<lambda>   ó    z.ReplaceDialogTest.setUpClass.<locals>.<lambda>)r   ÚrootZwithdrawr   ÚseÚtkMessageBoxZSearchEngineÚenginer   ÚdialogZbellr   Úokr   ÚtextZundo_block_startZundo_block_stop)Úclsr	   r	   r
   Ú
setUpClass   s    



zReplaceDialogTest.setUpClassc             C   s$   t t_| `| `| `| j ¡  | `d S )N)Ú	orig_mboxr   r   r   r   r   r   Zdestroy)r   r	   r	   r
   ÚtearDownClass!   s    
zReplaceDialogTest.tearDownClassc             C   s   | j  dd¡ d S )NÚinsertzThis is a sample sTring)r   r   )Úselfr	   r	   r
   ÚsetUp(   s    zReplaceDialogTest.setUpc             C   s€   | j j d¡ | jj d¡ | j j d¡ | j j d¡ | j j d¡ | j j d¡ | j j	 d¡ dt
_dt
_| j dd¡ d S )NÚ FTz1.0Úend)r   ÚpatvarÚsetr   ÚreplvarÚwordvarÚcasevarÚrevarÚwrapvarÚbackvarÚ	showerrorÚtitleÚmessager   Údelete)r   r	   r	   r
   ÚtearDown+   s    zReplaceDialogTest.tearDownc             C   sô  | j }| j}| jj}| jj}| jj}| j d¡ || j ¡ | 	¡ ƒ | 
d¡ | 
d¡ |ƒ  || 	dd¡dƒ | dd¡ | 
d¡ | 
d¡ |ƒ  || 	d	d
¡dƒ | 
d¡ | 
d¡ |ƒ  || 	dd¡dƒ | dd¡ | dd¡ | 	dd¡}| 
d¡ |ƒ  | 	dd¡}|||ƒ | dd¡ | 
d¡ | 
d¡ |ƒ  || 	d¡dƒ || 	d¡dƒ |ƒ  || 	d¡dƒ || 	d¡dƒ | 	dd¡}|ƒ  | 	dd¡}|||ƒ | 	dd¡}| 
d¡ |ƒ  | 	dd¡}|||ƒ | j d¡ d S )NZasdfÚaz1.8z1.12r   z1.0ÚisÚhelloz1.2z1.7ÚstringZworldz1.23z1.28r   z
line42:z
[a-z][\d]+z1.9ÚiÚjz2.1Úfoobarr   )r   ÚassertEqualr   r   r   r   Ú
replace_itZsetpatZgetpatÚgetr   Úmark_setr   Zfind_it)r   r   ÚequalÚpvÚrvÚreplaceÚbefore_textÚ
after_textr	   r	   r
   Útest_replace_simple7   s\    












z%ReplaceDialogTest.test_replace_simplec             C   sö   | j }| j}| jj}| jj}| jj}| jj d¡ | 	dd¡ | d¡ | d¡ |ƒ  || 
d¡dƒ || 
d¡dƒ |ƒ  || 
d¡dƒ || 
d¡dƒ |ƒ  || 
d¡dƒ | 	dd	¡ | d
¡ | 
dd¡}|ƒ  | 
dd¡}|||ƒ d S )NFr   z1.4r.   r/   z1.2z1.5z1.20z1.8r+   z1.0r   )r   r1   r   r   r   r   r2   r#   r   r4   r3   )r   r   r5   r6   r7   r8   r9   r:   r	   r	   r
   Útest_replace_wrap_around}   s.    


z*ReplaceDialogTest.test_replace_wrap_aroundc             C   st   | j }| j}| jj}| jj}| jj}| jj d¡ | d¡ | d¡ |ƒ  || 	dd¡dƒ || 	dd¡dƒ d S )	NTr+   r,   z1.0z1.4ÚThisz1.5z1.10)
r   r1   r   r   r   r   r2   r    r   r3   )r   r   r5   r6   r7   r8   r	   r	   r
   Útest_replace_whole_wordš   s    

z)ReplaceDialogTest.test_replace_whole_wordc             C   s˜   | j }| j}| jj}| jj}| jj}| jj d¡ | j 	dd¡}| d¡ | d¡ |ƒ  | j 	dd¡}|||ƒ | d¡ |ƒ  || 	dd¡dƒ d S )NTz1.0r   ÚthisÚthatr=   z1.4)
r1   r   r   r   r   r   r2   r!   r   r3   )r   r5   r   r6   r7   r8   r9   r:   r	   r	   r
   Útest_replace_match_case¨   s    



z)ReplaceDialogTest.test_replace_match_casec             C   sJ  | j }| j}| jj}| jj}| jj}| jj d¡ | 	dd¡}| d¡ | d¡ |ƒ  | 	dd¡}|||ƒ | 
dd¡ |ƒ  || 	dd	¡d
ƒ | d¡ |ƒ  |  dtj¡ |  dtj¡ | d¡ |ƒ  |  dtj¡ |  dtj¡ dt_dt_| d¡ | d¡ |ƒ  |  dtj¡ |  dtj¡ | j d¡ || 	¡ dƒ d S )NTz1.0r   z
[a-z][\d]+r,   r   z
line42z2.0z2.8Zlinhellor   ÚerrorÚEmptyz[\dÚPatternz[a]ztest\zInvalid Replace Expressionú?z\?)r1   r   r   r   r   r   r2   r"   r   r3   r   ÚassertInr%   r&   r'   Zsetcookedpat)r   r5   r   r6   r7   r8   r9   r:   r	   r	   r
   Útest_replace_regex»   s@    






z$ReplaceDialogTest.test_replace_regexc             C   s°   | j }| j}| jj}| jj}| jj}| jj d¡ | 	dd¡ | d¡ | d¡ |ƒ  || 
dd¡dƒ || 
dd	¡dƒ |ƒ  || 
d
d¡dƒ |ƒ  || 
dd
¡dƒ d S )NTr   z
is as r+   Úwasz1.2z1.4z2.0z2.3z1.5z1.8)r1   r   r   r   r   r   r2   r$   r   r   r3   )r   r5   r   r6   r7   r8   r	   r	   r
   Útest_replace_backwardsä   s     

z(ReplaceDialogTest.test_replace_backwardsc             C   sð   | j }| jj}| jj}| jj}| dd¡ | d| dd¡d ¡ | d¡ | d¡ |ƒ  |  	d| dd¡¡ | jj
 d¡ | d	¡ |ƒ  |  d
tj¡ |  dtj¡ | d¡ | d¡ |ƒ  | jj
 d¡ | d¡ | d¡ |ƒ  d S )Nr   Ú
z1.0r   éd   r+   rH   Tr   rB   rC   z[s][T]ú\Fztext which is not presentr0   )r   r   r   r   r   Úreplace_allr   r3   r   ZassertNotInr"   rF   r%   r&   r'   )r   r   r6   r7   rM   r	   r	   r
   Útest_replace_allø   s,    






z"ReplaceDialogTest.test_replace_allc             C   sr   | j }| jj}| jj}| jj}| j}| d¡ | d¡ |ƒ  || dd¡dƒ | jj	 d¡ | d¡ |ƒ  d S )Nr=   rH   z	sel.firstzsel.lastTr   )
r   r   r   r   r   Zdefault_commandr1   r   r3   r"   )r   r   r6   r7   Zreplace_findr5   r	   r	   r
   Útest_default_command  s    


z&ReplaceDialogTest.test_default_commandN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r   r)   r;   r<   r>   rA   rG   rI   rN   rO   r	   r	   r	   r
   r      s   F)r   Ú__main__é   )Ú	verbosity)Ú__doc__Zidlelib.replacer   ZunittestZtest.supportr   Ztkinterr   r   Zunittest.mockr   Zidlelib.idle_test.mock_tkr   Zidlelib.searchengineZsearchenginer   r   r   r%   ZTestCaser   rP   Úmainr	   r	   r	   r
   Ú<module>   s     