a
    åzek   ã                   @   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
   ú4/usr/lib/python3.9/idlelib/idle_test/test_replace.pyÚ<lambda>   ó    z.ReplaceDialogTest.setUpClass.<locals>.<lambda>)r   ÚrootZwithdrawr   ÚseÚ
messageboxZ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 r	   )Ú	orig_mboxr   r   r   r   r   r   Zdestroyr   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Ú FTú1.0Úend)r   ÚpatvarÚsetr   ÚreplvarÚwordvarÚcasevarÚrevarÚwrapvarÚbackvarÚ	showerrorÚtitleÚmessager   Údeleter   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Úaú1.8z1.12r   r   ÚisÚhelloú1.2z1.7ÚstringZworldz1.23z1.28r    z
line42:ú
[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   ú1.4r5   r6   r2   ú1.5z1.20r/   r0   r   r    )r   r8   r   r!   r   r#   r9   r'   r"   r;   r:   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 )	NTr0   r1   r   rD   ÚThisrE   z1.10)
r   r8   r   r!   r   r#   r9   r$   r"   r:   )r   r   r=   r>   r?   r@   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 )NTr   r    ÚthisÚthatrG   rD   )
r8   r   r   r!   r   r#   r9   r%   r"   r:   ©r   r=   r   r>   r?   r@   rA   rB   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 )NTr   r    r4   r1   r   z
line42ú2.0z2.8Zlinhellor   ÚerrorÚEmptyz[\dÚPatternz[a]ztest\zInvalid Replace Expressionú?z\?)r8   r   r   r!   r   r#   r9   r&   r"   r:   r   ÚassertInr)   r*   r+   ZsetcookedpatrK   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 r0   Úwasr2   rD   rM   z2.3rE   r/   )r8   r   r   r!   r   r#   r9   r(   r"   r   r:   )r   r=   r   r>   r?   r@   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   Ú
r   r    éd   r0   rT   Tr   rN   rO   z[s][T]ú\Fztext which is not presentr7   )r   r   r!   r   r#   Úreplace_allr   r:   r"   ZassertNotInr&   rR   r)   r*   r+   )r   r   r>   r?   rY   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 )NrG   rT   z	sel.firstzsel.lastTr   )
r   r   r!   r   r#   Zdefault_commandr8   r"   r:   r&   )r   r   r>   r?   Zreplace_findr=   r
   r
   r   Útest_default_command  s    


z&ReplaceDialogTest.test_default_commandN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r   r-   rC   rF   rH   rL   rS   rU   rZ   r[   r
   r
   r
   r   r      s   

F)r   Ú__main__é   )Ú	verbosity)Ú__doc__Zidlelib.replacer   ZunittestZtest.supportr   Útkinterr   r   Zunittest.mockr   Zidlelib.idle_test.mock_tkr   Zidlelib.searchengineZsearchenginer   r   r   r)   ZTestCaser   r\   Úmainr
   r
   r
   r   Ú<module>   s     