
    ;eD-                        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j        d           dS dS )z Test searchengine, coverage 99%.    )searchengineN)
BooleanVar	StringVarTclError)
messagebox)VarMbox)Textc                  l    t           t          _        t           t          _        t          t          _        d S N)r   ser   r   r	   r        :/usr/lib/python3.11/idlelib/idle_test/test_searchengine.pysetUpModuler      s    BMBLBMMMr   c                  l    t           t          _         t          t          _        t          t          _        d S r   )r   r   r   r   r   r   r   tearDownModuler      s    BMBLBMMMr   c                       e Zd Zd ZdS )Mockc                     d S 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dS )GetTestc                    t           j        }t          t           _        	 t                      }t          j        |          }|                     |t           j                   |                     |j        |           |                     t          j        |          |           |t           _        d S # |t           _        w xY wr   )r   SearchEnginer   getassertIsInstanceassertIs_searchengine)r   saved_Enginerootengines       r   test_getzGetTest.test_get$   s    	+66DVD\\F!!&"/:::MM$,f555MM"&,,///*BOOOlBO****s   BB2 2C N)r   r   r   r)   r   r   r   r   r   "   s#        
+ 
+ 
+ 
+ 
+r   r   c                       e Zd Zd ZdS )GetLineColTestc                 >   |                      t          j        d          d           |                      t          j        d          d           |                     t          t          j        d           |                     t          t          j        d           d S )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8800':::*boGGG*bo?????r   N)r   r   r   r6   r   r   r   r+   r+   0   s(        @ @ @ @ @r   r+   c                       e Zd Zd ZdS )GetSelectionTestc                    t                      }|                    dd           d }||_        |                     t	          j        |          d           d }||_        |                     t	          j        |          d           d S )Nr-   zHello World!c                 0    | dk    rdS | dk    rdS t           )N	sel.firstr-   sel.last1.12r   ss    r   selz0GetSelectionTest.test_get_selection.<locals>.selL   s#    KJvvNr   )r-   r=   c                      | dk    rdS t           Ninsert1.5r>   r?   s    r   markz1GetSelectionTest.test_get_selection.<locals>.markT       H}}UUNr   )rE   rE   )mockTextrD   indexr1   r   get_selection)r   textrA   rF   s       r   test_get_selectionz#GetSelectionTest.test_get_selectionF   s    zzEN+++	 	 	
 
)$//AAA	 	 	 
)$//@@@@@r   N)r   r   r   rL   r   r   r   r8   r8   9   s(        A A A A Ar   r8   c                       e Zd Zd ZdS )ReverseSearchTestc           	      *   | j         }d}t          j        d          } |t          j        ||t          |                                                    d            |t          j        ||d                                          d            |t          j        ||d                                          d            |t          j        ||d                                          d            |t          j        ||d          d            d S )	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     +z$bdCII66;;==xHHHbdB//4466AAAbdB//4466???bdA..3355v>>>bdA..55555r   N)r   r   r   r_   r   r   r   rN   rN   \   s#        6 6 6 6 6r   rN   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )SearchEngineTestc                 :    t          j        d           | _        d S )N)r'   )r   r!   r(   r5   s    r   setUpzSearchEngineTest.setUpl   s    o4000r   c                     | j         }| j        } ||                                d           |                    d            ||                                d            ||                                d           |j                            d            ||                                d            ||                                d           |j                            d            ||                                d            ||	                                d           |j
                            d            ||	                                d            ||                                d           |j                            d            ||                                d            ||                                d           |j                            d            ||                                d           d S )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    fmmoor"""gfmmoow'''fkkmmU###fkkmmT"""fmmoou%%%1fmmoot$$$fmmoou%%%1fmmoot$$$fmmoot$$$1fmmoou%%%fmmoou%%%1fmmoot$$$$$r   c                 <   | j         }|                    d           |                     |                                d           |j                            d           |                    d           |                     |                                d           d S )N\sr.   \\s)r(   setcookedpatr1   rg   rj   rk   )r   r(   s     r   test_setcookedpatz"SearchEngineTest.test_setcookedpat   s    E"""%000E"""&11111r   c                 >   | j         }| j        } ||                                d           |                    d            ||                                d           |j                            d            ||                                d           |j                            d           |                    d            ||                                d           |j                            d            ||                                d           d S )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225!!!ef!!##V,,,f!!##U+++++r   c                    | j         }| j        }|                    d           |                                } ||j        t          j        dt
          j                  j                   |j        	                    d           |                                } ||j        t          j        d          j        d           |                    d            ||                                d             |t          j        j        d           |                    d           |j        	                    d            ||                                d             |t          j        j        d           d S )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..""gorz'2=AAIJJJ1..""gorz'22:A>>>bfnn%%%dn$/	1 	1 	1cfnn%%%dn$?	A 	A 	A 	A 	Ar   c                 l   t           j        }| j        }d}d} || j                            ||          d             ||j        d           d|z   dz   } ||j        |            || j                            ||d          d             ||j        d           |dz  } ||j        |           d S )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    N	 4dk&&sC00$777io9:::%O.??i!1222dk&&sC33T:::io9:::M)i!122222r   N)	r   r   r   rc   ru   rz   r}   r   r   r   r   r   ra   ra   i   sq        1 1 1
% % %82 2 2, , , A A A*3 3 3 3 3r   ra   c                   *    e Zd Zed             Zd ZdS )
SearchTestc                     t                      | _        d}| j                            d|           t          j        d          | _        t          j        d           | _        d | j        _	        d | j        _
        d S )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   ss    
 :: 	 	y)))*X&&_T**
$=$=
!%>%>
"""r   c           
      ~   | j         }| j        }|j        }| j        }| j        }|j                            d             | ||          d            d }||_         | |||          d||ddddff           |j                            d            | |||          d||ddddff           |j                            d           |j	                            d            | |||          d||ddddff           |j	                            d           d }||_         | |||          d||d	d
ddff            | |||d          d||d	dddff           |j	                            d            | |||          d||d	dddff            | |||d          d||d	d
ddff           d S )Nc                      | dk    rdS t           rC   r>   r?   s    r   rF   z$SearchTest.test_search.<locals>.mark   rG   r   r   r.   rT   TFr   c                 0    | dk    rdS | dk    rdS t           )Nr;   z2.10r<   z2.16r>   r?   s    r   rA   z#SearchTest.test_search.<locals>.sel   s#    KJvvNr         
   )
r1   r(   search_textrK   r   patvarrk   rI   rq   rs   )r   r\   r(   searchrK   r   rF   rA   s           r   test_searchzSearchTest.test_search   sO    #yh$ffTllD!!!	 	 	 
ffT3#c1au'E!FGGG5!!!ffT3#c1a'F!GHHH4   4   ffT3#c1au'E!FGGG5!!!	 	 	 
ffT3#c1b$'F!GHHHffT3%%dCBd-K'LMMM4   ffT3#c1b$'F!GHHHffT3%%dCBd-K'LMMMMMr   N)r   r   r   classmethodr   r   r   r   r   r   r      sC         ? ? [?*!N !N !N !N !Nr   r   c                   6    e Zd Zed             Zd Zd Zd ZdS )ForwardBackwardTestc                 V   t          j        d           | _        t                      | _        d | j        _        d}| j                            d|           t          j        d          | _	        d| _
        t          j        d          | _        t          j        d          | _        d S )Nc                     dS )Nz4.0r   )rI   s    r   r   z0ForwardBackwardTest.setUpClass.<locals>.<lambda>  s    u r   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&&j''z&))r   c                      d fd	}|S )Nr   c                 z     j         | ||||          }|r"|d         |d                                         fn|S )Nr   r.   )rK   r[   )r   r]   colwrapokr   funcr   s         r   r   z/ForwardBackwardTest.make_search.<locals>.search#  sC    $ty#tS$;;C.1:CFCFKKMM**s:r   )r   r   )r   r   r   s   `` r   make_searchzForwardBackwardTest.make_search"  s.    	; 	; 	; 	; 	; 	; 	; r   c           	         | 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                   d S )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)  s2    ""4;#=>>hggc1a&&111ggc1a&&111ggc1a''...ggc1b%(($(333ggdlAq$//666ggdmQDT:::KHHH 	ggdmQD1148<<<<<r   c           	         | 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           d S )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:  s0    ##DK$?@@hhhsAq$''222hhsAq$''222hhsAq%(($///hhsAr5))48444hht|Q400$777hht}a"dt<<<jIII 	hht}aD11;?????r   N)r   r   r   r   r   r   r   r   r   r   r   r   r     sa         * * [*$  = = ="@ @ @ @ @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      sn   " " & & & & & &  4 4 4 4 4 4 4 4 4 4       / / / / / / / / 6 6 6 6 6 6 				    . . . . . . . .+ + + + +h + + +@ @ @ @ @X& @ @ @ A  A  A  A  Ax(  A  A  AF
6 
6 
6 
6 
6) 
6 
6 
6_3 _3 _3 _3 _3x( _3 _3 _3D:N :N :N :N :N" :N :N :Nz@@ @@ @@ @@ @@(+ @@ @@ @@F zHMA r   