<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
î
e fñ,  ã               @   s‚  d  Z  d d l Z d d l Z d d l m Z m Z m Z d d l j Z	 d d l
 m Z d d l m Z m Z d d l m Z d d „  Z d	 d
 „  Z Gd d „  d ƒ Z Gd d „  d e j ƒ Z Gd d „  d e j ƒ Z Gd d „  d e j ƒ Z Gd d „  d e j ƒ Z Gd d „  d e j ƒ Z Gd d „  d e j ƒ Z Gd d „  d e j ƒ Z e d k r~e j d d d d ƒ n  d S)z9Test functions and SearchEngine class in SearchEngine.py.é    N)Ú
BooleanVarÚ	StringVarÚTclError)ÚSearchEngine)ÚVarÚMbox)ÚTextc               C   s   t  t _ t  t _ t t _ d  S)N)r   Úser   r   r   ÚtkMessageBox© r   r   úH/opt/alt/python34/lib64/python3.4/idlelib/idle_test/test_searchengine.pyÚsetUpModule   s    		r   c               C   s   t  t _  t t _ t t _ d  S)N)r   r	   r   r
   r   r   r   r   ÚtearDownModule   s    		r   c               @   s   e  Z d  Z d d „  Z d S)ÚMockc             O   s   d  S)Nr   )ÚselfÚargsÚkwargsr   r   r   Ú__init__   s    zMock.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s   r   c               @   s   e  Z d  Z d d „  Z d S)ÚGetTestc             C   s~   t  j } t t  _ z[ t ƒ  } t  j | ƒ } |  j | t  j ƒ |  j | j | ƒ |  j t  j | ƒ | ƒ Wd  | t  _ Xd  S)N)r	   r   r   ÚgetZassertIsInstanceZassertIsZ_searchengine)r   Zsaved_EngineÚrootÚenginer   r   r   Útest_get#   s    			zGetTest.test_getN)r   r   r   r   r   r   r   r   r   !   s   r   c               @   s   e  Z d  Z d d „  Z d S)ÚGetLineColTestc             C   sb   |  j  t j d ƒ d ƒ |  j  t j d ƒ d	 ƒ |  j t t j d ƒ |  j t t j d ƒ d  S)
Nz1.0é   r   z1.11é   z1.0 lineendÚend)r   r   )r   r   )ÚassertEqualr	   Zget_line_colZassertRaisesÚ
ValueError)r   r   r   r   Útest_get_line_col1   s    z GetLineColTest.test_get_line_colN)r   r   r   r"   r   r   r   r   r   /   s   r   c               @   s   e  Z d  Z d d „  Z d S)ÚGetSelectionTestc             C   sy   t  ƒ  } | j d d ƒ d d „  } | | _ |  j t j | ƒ d	 ƒ d d „  } | | _ |  j t j | ƒ d
 ƒ d  S)Nú1.0zHello World!c             S   s*   |  d k r d S|  d k r  d St  ‚ d  S)Nz	sel.firstz1.0zsel.lastz1.12)r   )Úsr   r   r   ÚselK   s
      z0GetSelectionTest.test_get_selection.<locals>.selú1.12c             S   s   |  d k r d St  ‚ d  S)NÚinsertz1.5)r   )r%   r   r   r   ÚmarkS   s     z1GetSelectionTest.test_get_selection.<locals>.markú1.5)r$   r'   )r*   r*   )ÚmockTextr(   Úindexr    r	   Zget_selection)r   Útextr&   r)   r   r   r   Útest_get_selectionE   s    			z#GetSelectionTest.test_get_selectionN)r   r   r   r.   r   r   r   r   r#   8   s   r#   c               @   s   e  Z d  Z d d „  Z d S)ÚReverseSearchTestc             C   sÌ   |  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  ƒ d  S)NzHere is an 'is' test text.Úisé   é   é   é   é   é   )r1   r2   )r1   r2   )r4   r5   )r4   r5   )r    ÚreÚcompiler	   Zsearch_reverseÚlenÚspan)r   ÚEqualÚlineÚprogr   r   r   Útest_search_reverse]   s    	("""z%ReverseSearchTest.test_search_reverseN)r   r   r   r>   r   r   r   r   r/   [   s   r/   c               @   sX   e  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z d	 d
 „  Z d d „  Z d S)ÚSearchEngineTestc             C   s   t  j d d  ƒ |  _ d  S)Nr   )r	   r   r   )r   r   r   r   ÚsetUpk   s    zSearchEngineTest.setUpc             C   sW  |  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 ƒ d  S)NÚ ÚhelloFr   Tr   )r   r    ÚgetpatÚsetpatZisreÚrevarÚsetZiscaseÚcasevarZiswordÚwordvarZiswrapÚwrapvarZisbackÚbackvar)r   r   r;   r   r   r   Útest_is_getp   s(    		zSearchEngineTest.test_is_getc             C   sc   |  j  } | j d ƒ |  j | j ƒ  d ƒ | j j d ƒ | j d ƒ |  j | j ƒ  d ƒ d  S)Nz\sr   z\\s)r   Zsetcookedpatr    rC   rE   rF   )r   r   r   r   r   Útest_setcookedpatŒ   s    	z"SearchEngineTest.test_setcookedpatc             C   s¿   |  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 ƒ d  S)NrA   rB   Tz	\bhello\bFz\sz\\s)r   r    ZgetcookedpatrD   rH   rF   rE   )r   r   r;   r   r   r   Útest_getcookedpat”   s    		z"SearchEngineTest.test_getcookedpatc             C   sò   |  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  ƒ | j d ƒ | j
 j	 d ƒ | | j ƒ  d  ƒ |  j t j j d ƒ d  S)NZHellor   r   rA   ú+z#Error: nothing to repeat
Pattern: +)r   r    rD   ZgetprogÚpatternr7   r8   Ú
IGNORECASErG   rF   rE   r   Ú	showerrorÚmessage)r   r   r;   Ztemppatr   r   r   Útest_getprog¤   s    		"zSearchEngineTest.test_getprogc             C   sµ   t  j } |  j } d } d } | |  j j | | ƒ d  ƒ | | j d ƒ d | d } | | j | ƒ | |  j j | | d ƒ d  ƒ | | j d ƒ | d 7} | | j | ƒ d  S)Nz[a-zz$unexpected end of regular expressionzRegular expression errorzError: z
Pattern: [a-zr4   z

Offset: 5)r   rQ   r    r   Zreport_errorÚtitlerR   )r   rQ   r;   ÚpatÚmsgZexpected_messager   r   r   Útest_report_error·   s    		
z"SearchEngineTest.test_report_errorN)	r   r   r   r@   rK   rL   rM   rS   rW   r   r   r   r   r?   h   s   r?   c               @   s.   e  Z d  Z e d d „  ƒ Z d d „  Z d S)Ú
SearchTestc             C   sq   t  ƒ  |  _ d } |  j j d | ƒ t j d ƒ |  _ t j d  ƒ |  _ d d „  |  j _	 d d „  |  j _
 d  S)Nz&First line
Line with target
Last line
z1.0Útargetc              W   s
   d |  f S)NÚfr   )r   r   r   r   Ú<lambda>Ù   s    z'SearchTest.setUpClass.<locals>.<lambda>c              W   s
   d |  f S)NÚbr   )r   r   r   r   r[   Ú   s    )r+   r-   r(   r7   r8   rU   r	   r   r   Úsearch_forwardÚsearch_backward)ÚclsÚ	test_textr   r   r   Ú
setUpClassË   s    zSearchTest.setUpClassc          	   C   s  |  j  } |  j } | j } |  j } |  j } | j j d  ƒ | | | ƒ 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 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 ƒ d  S)Nc             S   s   |  d k r d St  ‚ d  S)Nr(   z1.5)r   )r%   r   r   r   r)   ì   s     z$SearchTest.test_search.<locals>.markrZ   r   r4   TFr\   c             S   s*   |  d k r d S|  d k r  d St  ‚ d  S)Nz	sel.firstz2.10zsel.lastz2.16)r   )r%   r   r   r   r&   ù   s
      z#SearchTest.test_search.<locals>.selé   é   é
   )
r    r   Zsearch_textr-   rU   ZpatvarrF   r,   rI   rJ   )r   r;   r   Úsearchr-   rU   r)   r&   r   r   r   Útest_searchá   s.    						...	.1.zSearchTest.test_searchN)r   r   r   Úclassmethodra   rf   r   r   r   r   rX   È   s   rX   c               @   sF   e  Z d  Z e d d „  ƒ Z d d „  Z d d „  Z d d „  Z d	 S)
ÚForwardBackwardTestc             C   sŒ   t  j d  ƒ |  _ t ƒ  |  _ d d „  |  j _ d } |  j j d | ƒ t j d ƒ |  _	 d |  _
 t j d	 ƒ |  _ t j d
 ƒ |  _ d  S)Nc             S   s   d S)Nz4.0r   )r,   r   r   r   r[     s    z0ForwardBackwardTest.setUpClass.<locals>.<lambda>z&First line
Line with target
Last line
z1.0rY   rb   rd   rc   Zxyzz\w*©rd   rc   )rb   ri   )r	   r   r   r+   r-   r,   r(   r7   r8   rU   ÚresÚfailpatÚemptypat)r_   r`   r   r   r   ra     s    	zForwardBackwardTest.setUpClassc                s   d ‡  ‡ f d d † } | S)Nr   c                s@   ˆ  ˆ j  |  | | | | ƒ } | r< | d | d j ƒ  f S| S)Nr   r   )r-   r:   )rU   r<   ÚcolZwrapÚokrj   )Úfuncr   r   r   re      s    z/ForwardBackwardTest.make_search.<locals>.searchr   )r   ro   re   r   )ro   r   r   Úmake_search  s    zForwardBackwardTest.make_searchc             C   s
  |  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 ƒd ƒ | | |  j d d d ƒ |  j ƒ d  S)Nr   r   Té   Frb   rd   é	   rn   ©rr   rr   )rb   rs   )r    rp   r   r]   rU   rj   rk   rl   )r   r;   ZforwardrU   r   r   r   Útest_search_forward&  s    		%z'ForwardBackwardTest.test_search_forwardc             C   s  |  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 ƒd ƒ | | |  j d d d ƒ d ƒ d  S)Nrq   r4   Trb   r   Frc   rr   rd   rn   ©rr   rr   )rb   ru   ©r4   rr   )rb   rv   )r    rp   r   r^   rU   rj   rk   rl   )r   r;   ZbackwardrU   r   r   r   Útest_search_backward7  s    		%z(ForwardBackwardTest.test_search_backwardN)r   r   r   rg   ra   rp   rt   rw   r   r   r   r   rh     s   rh   Ú__main__Ú	verbosityrb   Úexit)Ú__doc__r7   ZunittestZtkinterr   r   r   Ztkinter.messageboxZ
messageboxr
   Zidlelibr   r	   Zidlelib.idle_test.mock_tkr   r   r   r+   r   r   r   ZTestCaser   r   r#   r/   r?   rX   rh   r   Úmainr   r   r   r   Ú<module>   s&   	#`=C