
    ;ek                          	 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	ej                  Zed
k    r ej        d           dS dS )    )ReplaceDialogN)requiresgui)TkText)Mock)Mboxc                   v    e Zd Zed             Zed             Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd ZdS )ReplaceDialogTestc                    t                      | _        | j                                         t          t          _        t	          j        | j                  | _        t          | j        | j                  | _	        d | j	        _
        t                      | j	        _        t          | j                  | _        t                      | j        _        t                      | j        _        | j        | j	        _        d S )Nc                      d S N r       5/usr/lib/python3.11/idlelib/idle_test/test_replace.py<lambda>z.ReplaceDialogTest.setUpClass.<locals>.<lambda>   s    $ r   )r   rootwithdrawr	   se
messageboxSearchEngineenginer   dialogbellr   okr   textundo_block_startundo_block_stopclss    r   
setUpClasszReplaceDialogTest.setUpClass   s    44_SX..
"38SZ88
&,

>>$(FF!#'66 (
r   c                 j    t           t          _        | `| `| `| j                                         | `d S r   )	orig_mboxr   r   r   r   r   r   destroyr   s    r   tearDownClasszReplaceDialogTest.tearDownClass!   s3    !Hcj#*HHHr   c                 <    | j                             dd           d S )NinsertzThis is a sample sTring)r   r'   selfs    r   setUpzReplaceDialogTest.setUp(   s!    	#<=====r   c                    | 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(   s    r   tearDownzReplaceDialogTest.tearDown+   s    r"""###&&&&&&e$$$%%%&&&			&&&&&r   c                 8   | 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 )Nasdfa1.8z1.12r'   r-   ishello1.2z1.7stringworldz1.23z1.28r.   z
line42:
[a-z][\d]+z1.9ijz2.1foobarr   )r   assertEqualr   r/   r   r1   
replace_itsetpatgetpatgetr0   mark_setr'   find_itr)   r   equalpvrvreplacebefore_text
after_texts           r   test_replace_simplez%ReplaceDialogTest.test_replace_simple7   sZ    y [[ +( 	6"""dk  ""BFFHH--- 	s
v			dhhuf%%v... 	h&&&
t
w			dhhue$$g... 	x
w			dhhvv&&000 	h&&&Hk***hhue,,
}			XXeU++
k:&&& 	h&&&
s
s			dhhuoos###dhhuoos###			dhhuoos###dhhuoos###hhue,,			XXeU++
k:&&& hhue,,
x			XXeU++
k:&&& 	Ar   c                 t   | 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.4rF   rG   rB   1.5z1.20r?   r@   r-   r.   )r   rI   r   r/   r   r1   rJ   r5   r0   rN   rM   rP   s           r   test_replace_wrap_aroundz*ReplaceDialogTest.test_replace_wrap_around}   s   y [[ +(&&& 	h&&&
s
s			dhhuoos###dhhuoos###			dhhuoos###dhhv$$$			dhhuoos### 	h&&&
thhue,,			XXeU++
k:&&&&&r   c                    | j         }| j        }| j        j        }| j        j        }| j        j        }| j        j                            d           |                    d           |                    d            |              ||	                    dd          d            ||	                    dd          d           d S )	NTr@   rA   r-   rY   ThisrZ   z1.10)
r   rI   r   r/   r   r1   rJ   r2   r0   rM   )r)   r   rQ   rR   rS   rT   s         r   test_replace_whole_wordz)ReplaceDialogTest.test_replace_whole_word   s    y [[ +(%%%
t
w			dhhue$$f---dhhuf%%w/////r   c                    | 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thatr]   rY   )
rI   r   r   r/   r   r1   rJ   r3   r0   rM   r)   rQ   r   rR   rS   rT   rU   rV   s           r   test_replace_match_casez)ReplaceDialogTest.test_replace_match_case   s     y[[ +(%%%immE511
v
v			Y]]5%00
k:&&&
v			dhhue$$f-----r   c                    | 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.   rE   rA   r'   z
line422.0z2.8linhellor,   errorEmptyz[\dPatternz[a]ztest\zInvalid Replace Expression?z\?)rI   r   r   r/   r   r1   rJ   r4   r0   rM   r'   assertInr7   r8   r9   setcookedpatrb   s           r   test_replace_regexz$ReplaceDialogTest.test_replace_regex   s    y[[ +(d###hhue,,
}
w			XXeU++
k:&&&Hj)))			dhhue$$j111
r


			gy///gy0111
v			gy///i!2333		
u
x			gy///2I4EFFF 	  %%%bffhhr   c                 d   | 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@   wasrB   rY   re   z2.3rZ   r?   )rI   r   r   r/   r   r1   rJ   r6   r0   r'   rM   )r)   rQ   r   rR   rS   rT   s         r   test_replace_backwardsz(ReplaceDialogTest.test_replace_backwards   s!    y[[ +(%%%Hj)))
t
u			dhhue$$d+++dhhue$$e,,,			dhhue$$e,,,			dhhue$$e,,,,,r   c                    | j         }| j        j        }| j        j        }| j        j        }|                    dd           |                    d|                    dd          dz             |                    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@   ro   Tr,   rg   rh   z[s][T]\Fztext which is not presentrH   )r   r   r/   r   r1   replace_allr'   rM   r0   assertNotInr4   rk   r7   r8   r9   )r)   r   rR   rS   ru   s        r   test_replace_allz"ReplaceDialogTest.test_replace_all   s   y[[ k-Hd###Hdhhue44S8999
t
utxxu55666d###
r


gy///gy0111
x
te$$$
*+++
xr   c                    | j         }| j        j        }| j        j        }| j        j        }| j        }|                    d           |                    d            |              ||                    dd          d           | j        j	                            d           |                    d            |             d S )Nr]   ro   z	sel.firstzsel.lastTr,   )
r   r   r/   r   r1   default_commandrI   r0   rM   r4   )r)   r   rR   rS   replace_findrQ   s         r   test_default_commandz&ReplaceDialogTest.test_default_command  s    y[[ {2 
v
udhh{J//777d###
r


r   N)__name__
__module____qualname__classmethodr!   r%   r*   r;   rW   r[   r^   rc   rm   rp   rw   r{   r   r   r   r   r      s        # # [#   [> > >
' 
' 
'D D DL' ' ':0 0 0. . .&' ' 'R- - -(  8    r   r   __main__   )	verbosity)idlelib.replacer   unittesttest.supportr   tkinterr   r   unittest.mockr   idlelib.idle_test.mock_tkr	   idlelib.searchenginesearchenginer   r   r#   r7   TestCaser   r|   mainr   r   r   <module>r      s    ) ) ) ) ) )  ! ! ! ! ! !                * * * * * * ! ! ! ! ! !M	N	Q Q Q Q Q) Q Q Qh zHMA r   