
    z%iD-                        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        W/home/uftp/.pyenv/versions/3.12.0/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__        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   r7   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   )rF   rF   )mockTextrE   indexr2   r   get_selection)r   textrB   rG   s       r   test_get_selectionz#GetSelectionTest.test_get_selectionF   si    zEN+	
 
))$/A	 
))$/@r   N)r   r   r   rM   r   r   r   r9   r9   9   s    Ar   r9   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)      rS      )      rV      )r2   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   rO   rO   \   s    6r   rO   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)   r6   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)   r2   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)   setcookedpatr2   rh   rk   rl   )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 )Nrf   rg   Tz	\bhello\bFrx   ry   )r)   r2   getcookedpatri   rp   rl   rk   ru   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   rf   zError: Empty regular expression+z-Error: nothing to repeat
Pattern: +
Offset: 0)r)   r2   ri   getprogpatternrX   rY   
IGNORECASErn   rl   r	   	showerrormessagerk   )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-zrU   z

Offset: 5)r	   r   r2   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   rd   rv   r{   r~   r   r   r   r   r   rb   rb   i   s!    1
%82, A*3r   rb   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   )rI   rL   rE   rX   rY   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         rD   r?   r@   s    r   rG   z$SearchTest.test_search.<locals>.mark   rH   r   r   r/   rU   TFr   c                 &    | dk(  ry| dk(  ryt         )Nr<   z2.10r=   z2.16r?   r@   s    r   rB   z#SearchTest.test_search.<locals>.sel   s    KJvNr         
   )
r2   r)   search_textrL   r   patvarrl   rJ   rr   rt   )r   r]   r)   searchrL   r   rG   rB   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   )rJ   s    r   r   z0ForwardBackwardTest.setUpClass.<locals>.<lambda>  r   r   r   r.   r   )r   )r   r   xyzz\w*)r   r"   r)   rI   rL   rJ   rE   rX   rY   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/   )rL   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   )r2   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   rU   Tr   r   Fr   r   r   r   r   )r   )rU   r   )r2   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
   rI   rX   r   r   r   TestCaser    r,   r9   rO   rb   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   