o
    JAfk   ã                   @   s˜   	 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rJejdd dS dS )é    )Ú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
   ú5/usr/lib/python3.10/idlelib/idle_test/test_replace.pyÚ<lambda>   s    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.4r4   r5   r1   ú1.5z1.20r.   r/   r   r   )r   r7   r   r    r   r"   r8   r&   r!   r:   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/   r0   r   rC   ÚThisrD   z1.10)
r   r7   r   r    r   r"   r8   r#   r!   r9   )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ÚthatrF   rC   )
r7   r   r   r    r   r"   r8   r$   r!   r9   ©r   r<   r   r=   r>   r?   r@   rA   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   r3   r0   r   z
line42ú2.0z2.8Zlinhellor   ÚerrorÚEmptyz[\dÚPatternz[a]ztest\zInvalid Replace Expressionú?z\?)r7   r   r   r    r   r"   r8   r%   r!   r9   r   ÚassertInr(   r)   r*   ZsetcookedpatrJ   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/   Úwasr1   rC   rL   z2.3rD   r.   )r7   r   r   r    r   r"   r8   r'   r!   r   r9   )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   r/   rS   Tr   rM   rN   z[s][T]ú\Fztext which is not presentr6   )r   r   r    r   r"   Úreplace_allr   r9   r!   ZassertNotInr%   rQ   r(   r)   r*   )r   r   r=   r>   rX   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 )NrF   rS   z	sel.firstzsel.lastTr   )
r   r   r    r   r"   Zdefault_commandr7   r!   r9   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,   rB   rE   rG   rK   rR   rT   rY   rZ   r
   r
   r
   r   r      s    

F)r   Ú__main__é   )Ú	verbosity)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"      ÿ