
    6bhD-                        d Z ddlmZ ddlZddlmZmZmZ ddlm	Z	 ddl
mZmZ ddl
mZ ddlZd Zd	 Z G d
 d      Z G d dej&                        Z G d dej&                        Z G d dej&                        Z G d dej&                        Z G d dej&                        Z G d dej&                        Z G d dej&                        Zedk(  r ej8                  d       yy)z Test searchengine, coverage 99%.    )searchengineN)
BooleanVar	StringVarTclError)
messagebox)VarMbox)Textc                  ^    t         t        _        t         t        _        t        t        _        y N)r   ser   r   r	   r        M/opt/python-3.12.12/usr/lib/python3.12/idlelib/idle_test/test_searchengine.pysetUpModuler      s    BMBLBMr   c                  ^    t         t        _         t        t        _        t        t        _        y r   )r   r   r   r   r   r   r   tearDownModuler      s    BMBLBMr   c                       e Zd Zd Zy)Mockc                      y r   r   )selfargskwargss      r   __init__zMock.__init__    s    r   N)__name__
__module____qualname__r   r   r   r   r   r      s    -r   r   c                       e Zd Zd Zy)GetTestc                 z   t         j                  }t        t         _        	 t               }t        j                  |      }| j	                  |t         j                         | j                  |j                  |       | j                  t        j                  |      |       |t         _        y # |t         _        w xY wr   )r   SearchEnginer   getassertIsInstanceassertIs_searchengine)r   saved_Enginerootengines       r   test_getzGetTest.test_get$   sx    	+6DVVD\F!!&"//:MM$,,f5MM"&&,/*BOlBOs   B B- -B:N)r   r   r   r)   r   r   r   r   r   "   s    
+r   r   c                       e Zd Zd Zy)GetLineColTestc                 ,   | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        t        j                  d       | j                  t        t        j                  d       y )N1.0)   r   z1.11)r.      z1.0 lineendend)assertEqualr   get_line_colassertRaises
ValueErrorr   s    r   test_get_line_colz GetLineColTest.test_get_line_col2   s`    /80':*booG*boo?r   N)r   r   r   r6   r   r   r   r+   r+   0   s    @r   r+   c                       e Zd Zd Zy)GetSelectionTestc                     t               }|j                  dd       d }||_        | j                  t	        j
                  |      d       d }||_        | j                  t	        j
                  |      d       y )Nr-   zHello World!c                 &    | dk(  ry| dk(  ryt         )N	sel.firstr-   sel.last1.12r   ss    r   selz0GetSelectionTest.test_get_selection.<locals>.selL   s    KJvNr   )r-   r=   c                     | dk(  ryt         Ninsert1.5r>   r?   s    r   markz1GetSelectionTest.test_get_selection.<locals>.markT       H}UNr   )rE   rE   )mockTextrD   indexr1   r   get_selection)r   textrA   rF   s       r   test_get_selectionz#GetSelectionTest.test_get_selectionF   si    zEN+	
 
))$/A	 
))$/@r   N)r   r   r   rL   r   r   r   r8   r8   9   s    Ar   r8   c                       e Zd Zd Zy)ReverseSearchTestc           	         | j                   }d}t        j                  d      } |t        j                  ||t        |            j                         d        |t        j                  ||d      j                         d        |t        j                  ||d      j                         d        |t        j                  ||d      j                         d        |t        j                  ||d      d        y )	NzHere is an 'is' test text.is)      rR      )      rU      )r1   recompiler   search_reverselenspan)r   Equallineprogs       r   test_search_reversez%ReverseSearchTest.test_search_reverse^   s      +zz$bdCI6;;=xHbdB/446AbdB/446?bdA.335v>bdA.5r   N)r   r   r   r_   r   r   r   rN   rN   \   s    6r   rN   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)SearchEngineTestc                 :    t        j                  d       | _        y )N)r'   )r   r!   r(   r5   s    r   setUpzSearchEngineTest.setUpl   s    oo40r   c                    | j                   }| j                  } ||j                         d       |j                  d        ||j                         d        ||j	                         d       |j
                  j                  d        ||j	                         d        ||j                         d       |j                  j                  d        ||j                         d        ||j                         d       |j                  j                  d        ||j                         d        ||j                         d       |j                  j                  d        ||j                         d        ||j                         d       |j                  j                  d        ||j                         d       y )N helloFr.   Tr   )r(   r1   getpatsetpatisrerevarsetiscasecasevariswordwordvariswrapwrapvarisbackbackvarr   r(   r\   s      r   test_is_getzSearchEngineTest.test_is_getq   s<     fmmor"gfmmow'fkkmU#fkkmT"fmmou%1fmmot$fmmou%1fmmot$fmmot$1fmmou%fmmou%1fmmot$r   c                    | j                   }|j                  d       | j                  |j                         d       |j                  j                  d       |j                  d       | j                  |j                         d       y )N\sr.   \\s)r(   setcookedpatr1   rg   rj   rk   )r   r(   s     r   test_setcookedpatz"SearchEngineTest.test_setcookedpat   se    E"%0E"&1r   c                     | j                   }| j                  } ||j                         d       |j                  d        ||j                         d       |j                  j                  d        ||j                         d       |j                  j                  d       |j                  d        ||j                         d       |j                  j                  d        ||j                         d       y )Nre   rf   Tz	\bhello\bFrw   rx   )r(   r1   getcookedpatrh   ro   rk   rj   rt   s      r   test_getcookedpatz"SearchEngineTest.test_getcookedpat   s      f!!#R(gf!!#W-4 f!!#\25!ef!!#V,f!!#U+r   c                    | j                   }| j                  }|j                  d       |j                         } ||j                  t        j                  dt
        j                        j                         |j                  j                  d       |j                         } ||j                  t        j                  d      j                  d       |j                  d        ||j                         d         |t        j                  j                  d       |j                  d       |j                  j                  d        ||j                         d         |t        j                  j                  d       y )NHellor.   r   re   zError: Empty regular expression+z-Error: nothing to repeat
Pattern: +
Offset: 0)r(   r1   rh   getprogpatternrW   rX   
IGNORECASErm   rk   r	   	showerrormessagerj   )r   r(   r\   temppats       r   test_getprogz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                    t         j                  }| j                  }d}d} || j                  j	                  ||      d         ||j
                  d       d|z   dz   } ||j                  |        || j                  j	                  ||d      d         ||j
                  d       |dz  } ||j                  |       y )Nz[a-zz$unexpected end of regular expressionzRegular expression errorzError: z
Pattern: [a-zrT   z

Offset: 5)r	   r   r1   r(   report_errortitler   )r   r   r\   patmsgexpected_messages         r   test_report_errorz"SearchEngineTest.test_report_error   s    NN	  4dkk&&sC0$7ioo9:%O.??i!12dkk&&sC3T:ioo9:M)i!12r   N)	r   r   r   rc   ru   rz   r}   r   r   r   r   r   ra   ra   i   s!    1
%82, A*3r   ra   c                   "    e Zd Zed        Zd Zy)
SearchTestc                    t               | _        d}| j                  j                  d|       t        j                  d      | _        t        j                  d       | _        d | j                  _	        d | j                  _
        y )N&First line
Line with target
Last line
r-   targetc                  
    d| fS )Nfr   r   s    r   <lambda>z'SearchTest.setUpClass.<locals>.<lambda>   s    3+r   c                  
    d| fS )Nbr   r   s    r   r   z'SearchTest.setUpClass.<locals>.<lambda>   s    C;r   )rH   rK   rD   rW   rX   r   r   r!   r(   search_forwardsearch_backwardcls	test_texts     r   
setUpClasszSearchTest.setUpClass   sc    
 : 	 	y)**X&__T*
$=

!%>

"r   c           
      Z   | j                   }| j                  }|j                  }| j                  }| j                  }|j
                  j                  d         | ||      d        d }||_         | |||      d||ddddff       |j                  j                  d        | |||      d||ddddff       |j                  j                  d       |j                  j                  d        | |||      d||ddddff       |j                  j                  d       d }||_         | |||      d||d	d
ddff        | |||d      d||d	dddff       |j                  j                  d        | |||      d||d	dddff        | |||d      d||d	d
ddff       y )Nc                     | dk(  ryt         rC   r>   r?   s    r   rF   z$SearchTest.test_search.<locals>.mark   rG   r   r   r.   rT   TFr   c                 &    | dk(  ry| dk(  ryt         )Nr;   z2.10r<   z2.16r>   r?   s    r   rA   z#SearchTest.test_search.<locals>.sel   s    KJvNr         
   )
r1   r(   search_textrK   r   patvarrk   rI   rq   rs   )r   r\   r(   searchrK   r   rF   rA   s           r   test_searchzSearchTest.test_search   s     ##yyhh$fTlD!	 
fT3#c1au'E!FG5!fT3#c1a'F!GH4 4 fT3#c1au'E!FG5!	 
fT3#c1b$'F!GHfT3%dCBd-K'LM4 fT3#c1b$'F!GHfT3%dCBd-K'LMr   N)r   r   r   classmethodr   r   r   r   r   r   r      s     ? ?*!Nr   r   c                   .    e Zd Zed        Zd Zd Zd Zy)ForwardBackwardTestc                 `   t        j                  d       | _        t               | _        d | j                  _        d}| j                  j                  d|       t        j                  d      | _	        d| _
        t        j                  d      | _        t        j                  d      | _        y )Nc                      y)Nz4.0r   )rI   s    r   r   z0ForwardBackwardTest.setUpClass.<locals>.<lambda>  s    ur   r   r-   r   )r   )r   r   xyzz\w*)r   r!   r(   rH   rK   rI   rD   rW   rX   r   resfailpatemptypatr   s     r   r   zForwardBackwardTest.setUpClass  s}    __T*
 :, 	 	y)**X&jj'zz&)r   c                      d fd	}|S )Nc                 j     j                   | ||||      }|r|d   |d   j                         fS |S )Nr   r.   )rK   r[   )r   r]   colwrapokr   funcr   s         r   r   z/ForwardBackwardTest.make_search.<locals>.search#  s;    tyy#tS$;C.1CFCFKKM*:s:r   )r   r   )r   r   r   s   `` r   make_searchzForwardBackwardTest.make_search"  s    	; r   c           	      
   | j                   }| j                  | j                  j                        }| j                  } | ||ddd      | j
                          | ||ddd      | j
                          | ||ddd      d         | ||ddd      | j
                          | || j                  ddd      d         | || j                  dddd	      d
        | || j                  ddd      | j
                         y )Nr.   r   T   Fr   r   	   r   r   )r   r   )r1   r   r(   r   r   r   r   r   )r   r\   forwardr   s       r   test_search_forwardz'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           	         | j                   }| j                  | j                  j                        }| j                  } | ||ddd      | j
                          | ||ddd      | j
                          | ||ddd      d         | ||ddd      | j
                          | || j                  ddd      d         | || j                  dd	dd
      d        | || j                  ddd      d       y )Nr   rT   Tr   r   Fr   r   r   r   r   )r   )rT   r   )r1   r   r(   r   r   r   r   r   )r   r\   backwardr   s       r   test_search_backwardz(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   N)r   r   r   r   r   r   r   r   r   r   r   r   r     s&     * *$="@r   r   __main__r   )	verbosity)__doc__idlelibr   r   unittesttkinterr   r   r   r   idlelib.idle_test.mock_tkr   r	   r
   rH   rW   r   r   r   TestCaser   r+   r8   rN   ra   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HMMA r   