
    /hhD-                        S SK Jr  S SKrS SKJrJrJr  S SKJr  S SK	J
r
Jr  S SK	Jr  S SKrS rS r " S	 S
5      r " S S\R$                  5      r " S S\R$                  5      r " S S\R$                  5      r " S S\R$                  5      r " S S\R$                  5      r " S S\R$                  5      r " S S\R$                  5      r\S:X  a  \R6                  " SS9  gg)    )searchengineN)
BooleanVar	StringVarTclError)
messagebox)VarMbox)Textc                  ^    [         [        l        [         [        l        [        [        l        g N)r   ser   r   r	   r        L/opt/python-3.13.8/usr/lib/python3.13/idlelib/idle_test/test_searchengine.pysetUpModuler      s    BMBLBMr   c                  ^    [         [        l         [        [        l        [        [        l        g r   )r   r   r   r   r   r   r   tearDownModuler      s    BMBLBMr   c                       \ rS rSrS rSrg)Mock   c                     g r   r   )selfargskwargss      r   __init__Mock.__init__    s    r   r   N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    -r   r   c                       \ rS rSrS rSrg)GetTest"   c                 ~   [         R                  n[        [         l         [        5       n[         R                  " U5      nU R	                  U[         R                  5        U R                  UR                  U5        U R                  [         R                  " U5      U5        U[         l        g ! U[         l        f = fr   )r   SearchEnginer   getassertIsInstanceassertIs_searchengine)r   saved_Enginerootengines       r   test_getGetTest.test_get$   sx    	+6DVVD\F!!&"//:MM$,,f5MM"&&,/*BOlBOs   BB/ /B<r   N)r   r   r   r    r.   r!   r   r   r   r#   r#   "   s    
+r   r#   c                       \ rS rSrS rSrg)GetLineColTest0   c                 0   U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        [        R                  S5        U R                  [        [        R                  S5        g )N1.0)   r   z1.11)r5      z1.0 lineendend)assertEqualr   get_line_colassertRaises
ValueErrorr   s    r   test_get_line_col GetLineColTest.test_get_line_col2   s`    /80':*booG*boo?r   r   N)r   r   r   r    r=   r!   r   r   r   r1   r1   0   s    @r   r1   c                       \ rS rSrS rSrg)GetSelectionTest9   c                     [        5       nUR                  SS5        S nX!l        U R                  [        R
                  " U5      S5        S nX1l        U R                  [        R
                  " U5      S5        g )Nr4   zHello World!c                 *    U S:X  a  gU S:X  a  g[         e)N	sel.firstr4   sel.last1.12r   ss    r   sel0GetSelectionTest.test_get_selection.<locals>.selL   s    KJvNr   )r4   rF   c                     U S:X  a  g[         eNinsert1.5rG   rH   s    r   mark1GetSelectionTest.test_get_selection.<locals>.markT       H}UNr   )rO   rO   )mockTextrN   indexr8   r   get_selection)r   textrJ   rP   s       r   test_get_selection#GetSelectionTest.test_get_selectionF   se    zEN+	
 
))$/A	 
))$/@r   r   N)r   r   r   r    rW   r!   r   r   r   r@   r@   9   s    Ar   r@   c                       \ rS rSrS rSrg)ReverseSearchTest\   c           	         U R                   nSn[        R                  " S5      nU" [        R                  " X2[        U5      5      R                  5       S5        U" [        R                  " X2S5      R                  5       S5        U" [        R                  " X2S5      R                  5       S5        U" [        R                  " X2S5      R                  5       S5        U" [        R                  " X2S5      S 5        g )	NzHere is an 'is' test text.is)      r_      )      rb      )r8   recompiler   search_reverselenspan)r   Equallineprogs       r   test_search_reverse%ReverseSearchTest.test_search_reverse^   s      +zz$bCI6;;=xHbB/446AbB/446?bA.335v>bA.5r   r   N)r   r   r   r    rl   r!   r   r   r   rZ   rZ   \   s    6r   rZ   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
SearchEngineTesti   c                 6    [         R                  " S S9U l        g )N)r,   )r   r&   r-   r<   s    r   setUpSearchEngineTest.setUpl   s    oo40r   c                    U R                   nU R                  nU" UR                  5       S5        UR                  S5        U" UR                  5       S5        U" UR	                  5       S5        UR
                  R                  S5        U" UR	                  5       S5        U" UR                  5       S5        UR                  R                  S5        U" UR                  5       S5        U" UR                  5       S5        UR                  R                  S5        U" UR                  5       S5        U" UR                  5       S5        UR                  R                  S5        U" UR                  5       S5        U" UR                  5       S5        UR                  R                  S5        U" UR                  5       S5        g )N helloFr5   Tr   )r-   r8   getpatsetpatisrerevarsetiscasecasevariswordwordvariswrapwrapvarisbackbackvarr   r-   ri   s      r   test_is_getSearchEngineTest.test_is_getq   s<     fmmor"gfmmow'fkkmU#fkkmT"fmmou%1fmmot$fmmou%1fmmot$fmmot$1fmmou%fmmou%1fmmot$r   c                    U R                   nUR                  S5        U R                  UR                  5       S5        UR                  R                  S5        UR                  S5        U R                  UR                  5       S5        g )N\sr5   \\s)r-   setcookedpatr8   rw   rz   r{   )r   r-   s     r   test_setcookedpat"SearchEngineTest.test_setcookedpat   se    E"%0E"&1r   c                     U R                   nU R                  nU" UR                  5       S5        UR                  S5        U" UR                  5       S5        UR                  R                  S5        U" UR                  5       S5        UR                  R                  S5        UR                  S5        U" UR                  5       S5        UR                  R                  S5        U" UR                  5       S5        g )Nru   rv   Tz	\bhello\bFr   r   )r-   r8   getcookedpatrx   r   r{   rz   r   s      r   test_getcookedpat"SearchEngineTest.test_getcookedpat   s      f!!#R(gf!!#W-4 f!!#\25!ef!!#V,f!!#U+r   c                 
   U R                   nU R                  nUR                  S5        UR                  5       nU" UR                  [
        R                  " S[
        R                  5      R                  5        UR                  R                  S5        UR                  5       nU" UR                  [
        R                  " S5      R                  S5        UR                  S5        U" UR                  5       S 5        U" [        R                  R                  S5        UR                  S5        UR                  R                  S5        U" UR                  5       S 5        U" [        R                  R                  S5        g )NHellor5   r   ru   zError: Empty regular expression+z-Error: nothing to repeat
Pattern: +
Offset: 0)r-   r8   rx   getprogpatternrd   re   
IGNORECASEr}   r{   r	   	showerrormessagerz   )r   r-   ri   temppats       r   test_getprogSearchEngineTest.test_getprog   s	     g.."goorzz'2==AIIJ1.."goorzz'2::A>bfnn%dnn$$/	1cfnn%dnn$$?	Ar   c                    [         R                  nU R                  nSnSnU" U R                  R	                  X45      S 5        U" UR
                  S5        SU-   S-   nU" UR                  U5        U" U R                  R	                  X4S5      S 5        U" UR
                  S5        US-  nU" UR                  U5        g )Nz[a-zz$unexpected end of regular expressionzRegular expression errorzError: z
Pattern: [a-zra   z

Offset: 5)r	   r   r8   r-   report_errortitler   )r   r   ri   patmsgexpected_messages         r   test_report_error"SearchEngineTest.test_report_error   s    NN	  4dkk&&s0$7ioo9:%O.??i!12dkk&&s3T:ioo9:M)i!12r   )r-   N)r   r   r   r    rr   r   r   r   r   r   r!   r   r   r   ro   ro   i   s!    1
%82, A*3r   ro   c                   *    \ rS rSr\S 5       rS rSrg)
SearchTest   c                    [        5       U l        SnU R                  R                  SU5        [        R                  " S5      U l        [        R                  " S 5      U l        S U R                  l	        S U R                  l
        g )N&First line
Line with target
Last line
r4   targetc                  
    SU 4$ )Nfr   r   s    r   <lambda>'SearchTest.setUpClass.<locals>.<lambda>   s    3+r   c                  
    SU 4$ )Nbr   r   s    r   r   r      s    C;r   )rS   rV   rN   rd   re   r   r   r&   r-   search_forwardsearch_backwardcls	test_texts     r   
setUpClassSearchTest.setUpClass   sc    
 : 	 	y)**X&__T*
$=

!%>

"r   c           
      :   U R                   nU R                  nUR                  nU R                  nU R                  nUR
                  R                  S 5        U" U" U5      S 5        S nXdl        U" U" XE5      SXESSSS445        UR                  R                  S5        U" U" XE5      SXESSSS445        UR                  R                  S5        UR                  R                  S5        U" U" XE5      SXESSSS445        UR                  R                  S5        S nXtl        U" U" XE5      SXES	S
SS445        U" U" XES5      SXES	SSS445        UR                  R                  S5        U" U" XE5      SXES	SSS445        U" U" XES5      SXES	S
SS445        g )Nc                     U S:X  a  g[         erM   rG   rH   s    r   rP   $SearchTest.test_search.<locals>.mark   rR   r   r   r5   ra   TFr   c                 *    U S:X  a  gU S:X  a  g[         e)NrD   z2.10rE   z2.16rG   rH   s    r   rJ   #SearchTest.test_search.<locals>.sel   s    KJvNr         
   )
r8   r-   search_textrV   r   patvarr{   rT   r   r   )r   ri   r-   searchrV   r   rP   rJ   s           r   test_searchSearchTest.test_search   s     ##yyhh$fTlD!	 
fT#1au'E!FG5!fT#1a'F!GH4 4 fT#1au'E!FG5!	 
fT#1b$'F!GHfT%dBd-K'LM4 fT#1b$'F!GHfT%dBd-K'LMr   r   N)r   r   r   r    classmethodr   r   r!   r   r   r   r   r      s     ? ?*!Nr   r   c                   6    \ rS rSr\S 5       rS rS rS rSr	g)ForwardBackwardTesti  c                 h   [         R                  " S 5      U l        [        5       U l        S U R                  l        SnU R                  R                  SU5        [        R                  " S5      U l	        SU l
        [        R                  " S5      U l        [        R                  " S5      U l        g )Nc                     g)Nz4.0r   )rT   s    r   r   0ForwardBackwardTest.setUpClass.<locals>.<lambda>  s    ur   r   r4   r   )r   )r   r   xyzz\w*)r   r&   r-   rS   rV   rT   rN   rd   re   r   resfailpatemptypatr   s     r   r   ForwardBackwardTest.setUpClass  s}    __T*
 :, 	 	y)**X&jj'zz&)r   c                    ^ ^ SUU 4S jjnU$ )Nc                 p   > T" TR                   XX#U5      nU(       a  US   US   R                  5       4$ U$ )Nr   r5   )rV   rh   )r   rj   colwrapokr   funcr   s         r   r   /ForwardBackwardTest.make_search.<locals>.search#  s7    tyy#S;C.1CFCFKKM*:s:r   )r   r   )r   r   r   s   `` r   make_searchForwardBackwardTest.make_search"  s    	; 	; r   c           
         U R                   nU R                  U R                  R                  5      nU R                  nU" U" USSS5      U R
                  5        U" U" USSS5      U R
                  5        U" U" USSS5      S 5        U" U" USSS5      U R
                  5        U" U" U R                  SSS5      S 5        U" U" U R                  SSSSS	9S
5        U" U" U R                  SSS5      U R
                  5        g )Nr5   r   T   Fr   r   	   r   r   )r   r   )r8   r   r-   r   r   r   r   r   )r   ri   forwardr   s       r   test_search_forward'ForwardBackwardTest.test_search_forward)  s      ""4;;#=#=>hhgc1a&1gc1a&1gc1a'.gc1b%($((3gdllAq$/6gdmmQDT:KH 	gdmmQD1488<r   c           
         U R                   nU R                  U R                  R                  5      nU R                  nU" U" USSS5      U R
                  5        U" U" USSS5      U R
                  5        U" U" USSS5      S 5        U" U" USSS5      U R
                  5        U" U" U R                  SSS5      S 5        U" U" U R                  SS	SSS
9S5        U" U" U R                  SSS5      S5        g )Nr   ra   Tr   r   Fr   r   r   r   r   )r   )ra   r   )r8   r   r-   r   r   r   r   r   )r   ri   backwardr   s       r   test_search_backward(ForwardBackwardTest.test_search_backward:  s      ##DKK$?$?@hhhsAq$'2hsAq$'2hsAq%($/hsAr5)4884ht||Q40$7ht}}a"dt<jI 	ht}}aD1;?r   r   N)
r   r   r   r    r   r   r   r   r   r!   r   r   r   r   r     s&     * *$="@r   r   __main__r   )	verbosity)idlelibr   r   unittesttkinterr   r   r   r   idlelib.idle_test.mock_tkr   r	   r
   rS   rd   r   r   r   TestCaser#   r1   r@   rZ   ro   r   r   r   mainr   r   r   <module>r      s    '  4 4  / 6 	. .+h +@X&& @ Ax((  AF
6)) 
6_3x(( _3D:N"" :Nz@@(++ @@F zMMA r   