
    z%ik                          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
ej&                        Zedk(  r ej,                  d       yy)zTest replace, coverage 78%.    )ReplaceDialogN)requiresgui)TkText)Mock)Mboxc                   h    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y)ReplaceDialogTestc                 *   t               | _        | j                  j                          t        t        _        t	        j                  | j                        | _        t        | j                  | j                        | _	        d | j                  _
        t               | j                  _        t        | j                        | _        t               | j                  _        t               | j                  _        | j                  | j                  _        y )Nc                       y N r       R/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/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    4__SXX.
"388SZZ8
&



>$(F!#'6 ((

r   c                 f    t         t        _        | `| `| `| j                  j                          | `y r   )	orig_mboxr   r   r   r   r   r   destroyr   s    r   tearDownClasszReplaceDialogTest.tearDownClass!   s+    !Hcj#*Hr   c                 <    | j                   j                  dd       y )NinsertzThis is a sample sTring)r   r'   selfs    r   setUpzReplaceDialogTest.setUp(   s    		#<=r   c                 n   | j                   j                  j                  d       | j                  j                  j                  d       | j                   j
                  j                  d       | j                   j                  j                  d       | j                   j                  j                  d       | j                   j                  j                  d       | j                   j                  j                  d       dt        _        dt        _        | j                  j                  dd       y )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                 :   | j                   }| j                  }| j                  j                  }| j                  j
                  }| j                  j                  }| j                  j                  d        || j                  j                         |j                                |j                  d       |j                  d        |         ||j                  dd      d       |j                  dd       |j                  d       |j                  d        |         ||j                  d	d
      d       |j                  d       |j                  d        |         ||j                  dd      d       |j                  dd       |j                  dd       |j                  dd      }|j                  d        |        |j                  dd      } |||       |j                  dd       |j                  d       |j                  d        |         ||j                  d      d        ||j                  d      d        |         ||j                  d      d        ||j                  d      d       |j                  dd      } |        |j                  dd      } |||       |j                  dd      }|j                  d        |        |j                  dd      } |||       | j                  j                  d       y )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   sl    yy  [[[[  ++(( 	6"dkk  "BFFH- 	s
v	dhhuf%v. 	h&
t
w	dhhue$g. 	x
w	dhhvv&0 	h&Hk*hhue,
}	XXeU+
k:& 	h&
s
s	dhhuos#dhhuos#	dhhuos#dhhuos#hhue,	XXeU+
k:& hhue,
x	XXeU+
k:& 	Ar   c                 2   | j                   }| j                  }| j                  j                  }| j                  j
                  }| j                  j                  }| j                  j                  j                  d       |j                  dd       |j                  d       |j                  d        |         ||j                  d      d        ||j                  d      d        |         ||j                  d      d        ||j                  d      d        |         ||j                  d      d       |j                  dd	       |j                  d
       |j                  dd      } |        |j                  dd      } |||       y )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}   s5   yy  [[[[  ++((& 	h&
s
s	dhhuos#dhhuos#	dhhuos#dhhv$	dhhuos# 	h&
thhue,	XXeU+
k:&r   c                    | j                   }| j                  }| j                  j                  }| j                  j
                  }| j                  j                  }| j                  j                  j                  d       |j                  d       |j                  d        |         ||j                  dd      d        ||j                  dd      d       y )	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    yy  [[[[  ++((%
t
w	dhhue$f-dhhuf%w/r   c                 8   | j                   }| j                  }| j                  j                  }| j                  j
                  }| j                  j                  }| j                  j                  j                  d       | j                  j                  dd      }|j                  d       |j                  d        |        | j                  j                  dd      } |||       |j                  d        |         ||j                  dd      d       y )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      yy[[[[  ++((%iimmE51
v
v	YY]]5%0
k:&
v	dhhue$f-r   c                    | j                   }| j                  }| j                  j                  }| j                  j
                  }| j                  j                  }| j                  j                  j                  d       |j                  dd      }|j                  d       |j                  d        |        |j                  dd      } |||       |j                  dd        |         ||j                  dd	      d
       |j                  d        |        | j                  dt        j                         | j                  dt        j                         |j                  d        |        | j                  dt        j                         | j                  dt        j                         dt        _        dt        _        |j                  d       |j                  d        |        | j                  dt        j                         | j                  dt        j                         | j                  j                  d        ||j                         d       y )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     yy[[[[  ++((d#hhue,
}
w	XXeU+
k:&Hj)	dhhue$j1
r
	gy/gy001
v	gy/i!2!23		
u
x	gy/2I4E4EF 	  %bffhr   c                 \   | j                   }| j                  }| j                  j                  }| j                  j
                  }| j                  j                  }| j                  j                  j                  d       |j                  dd       |j                  d       |j                  d        |         ||j                  dd      d        ||j                  dd	      d        |         ||j                  d
d      d        |         ||j                  dd
      d       y )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      yy[[[[  ++((%Hj)
t
u	dhhue$d+dhhue$e,	dhhue$e,	dhhue$e,r   c                    | j                   }| j                  j                  }| j                  j                  }| j                  j
                  }|j                  dd       |j                  d|j                  dd      dz         |j                  d       |j                  d        |        | j                  d|j                  dd             | j                  j                  j                  d       |j                  d	        |        | j                  d
t        j                         | j                  dt        j                         |j                  d       |j                  d        |        | j                  j                  j                  d       |j                  d       |j                  d        |        y )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:   yy[[[[  kk--Hd#Hdhhue4S89
t
utxxu56d#
r
gy/gy001
x
te$
*+
xr   c                    | j                   }| j                  j                  }| j                  j                  }| j                  j
                  }| j                  }|j                  d       |j                  d        |         ||j                  dd      d       | j                  j                  j                  d       |j                  d        |        y )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    yy[[[[  {{22  
v
udhh{J/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L':0.&'R-(8r   r   __main__   )	verbosity)__doc__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      sh     )  !    * !MM	NN	Q)) Qh zHMMA r   