Ë
    #´˜jD-  ã                   óØ  — 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   © ó    ú5lib/python3.12/idlelib/idle_test/test_searchengine.pyÚsetUpModuler      s   € ä„B„MÜ„B„LÜ„B…Mr   c                  ó^   — t         t        _         t        t        _        t        t        _        y r   )r   r   r   r   r   r   r   ÚtearDownModuler      s   € ä„B„MÜ„B„LÜ„B…Mr   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   € Ü—‘ˆÜŒŒð	+Ü“6ˆDÜ—V‘V˜D“\ˆFØ×!Ñ! &¬"¯/©/Ô:Ø�M‰M˜$×,Ñ,¨fÔ5Ø�M‰Mœ"Ÿ&™& ›,¨Ô/à*ŒB�Oø˜lŒB�Oús   ¡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°'Ô:à×Ñœ*¤b§o¡o¸ÔGØ×Ñœ*¤b§o¡o¸Õ?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ˆØ�‰�E˜NÔ+ò	ð
 ˆŒ
Ø×Ñœ×)Ñ)¨$Ó/°Ô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Å   € Ø× Ñ ˆØ+ˆÜ�z‰z˜$ÓˆÙŒb×Ñ  d¬C°«IÓ6×;Ñ;Ó=¸xÔHÙŒb×Ñ  d¨BÓ/×4Ñ4Ó6¸ÔAÙŒb×Ñ  d¨BÓ/×4Ñ4Ó6¸Ô?ÙŒb×Ñ  d¨AÓ.×3Ñ3Ó5°vÔ>ÙŒb×Ñ  d¨AÓ.°Õ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   € Ü—o‘o¨4Ô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<  € Ø—‘ˆØ× Ñ ˆáˆf�m‰m‹o˜rÔ"Ø�‰�gÔÙˆf�m‰m‹o˜wÔ'áˆf�k‰k‹m˜UÔ#Ø�‰×Ñ˜ÔÙˆf�k‰k‹m˜TÔ"áˆf�m‰m‹o˜uÔ%Ø�‰×Ñ˜1ÔÙˆf�m‰m‹o˜tÔ$áˆf�m‰m‹o˜uÔ%Ø�‰×Ñ˜1ÔÙˆf�m‰m‹o˜tÔ$áˆf�m‰m‹o˜tÔ$Ø�‰×Ñ˜1ÔÙˆf�m‰m‹o˜uÔ%áˆf�m‰m‹o˜uÔ%Ø�‰×Ñ˜1ÔÙˆf�m‰m‹o˜tÕ$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ÔØ—.‘.Ó"ˆÙˆg�o‰oœrŸz™z¨'´2·=±=ÓA×IÑIÔJØ�‰×Ñ˜1ÔØ—.‘.Ó"ˆÙˆg�o‰oœrŸz™z¨'Ó2×:Ñ:¸AÔ>à�‰�bÔÙˆf�n‰nÓ Ô%ÙŒd�n‰n×$Ñ$Ø/ô	1à�‰�cÔØ�‰×Ñ˜ÔÙˆf�n‰nÓ Ô%ÙŒd�n‰n×$Ñ$Ø?õ	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³   € Ü—N‘Nˆ	Ø× Ñ ˆØˆØ4ˆáˆd�k‰k×&Ñ& s¨CÓ0°$Ô7Ùˆi�o‰oÐ9Ô:Ø%¨™OÐ.?Ñ?ÐÙˆi×ÑÐ!1Ô2áˆd�k‰k×&Ñ& s¨C°Ó3°TÔ:Ùˆi�o‰oÐ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Â  € Ø× Ñ ˆØ—‘ˆØ×#Ñ#ˆØ�y‰yˆØ�h‰hˆà�‰×Ñ˜$Ôá‰f�T‹l˜DÔ!ò	ð ˆŒ
Ù‰f�T˜3Ó #¨¨c°1°a¸¸uÐ'EÐ!FÔGØ�‰×Ñ˜5Ô!Ù‰f�T˜3Ó #¨¨c°1°a¸ÀÐ'FÐ!GÔHØ�‰×Ñ˜4Ô Ø�‰×Ñ˜4Ô Ù‰f�T˜3Ó #¨¨c°1°a¸¸uÐ'EÐ!FÔGØ�‰×Ñ˜5Ô!ò	ð ˆŒ
Ù‰f�T˜3Ó #¨¨c°1°b¸$ÀÐ'FÐ!GÔHÙ‰f�T˜3 Ó%¨¨d°C¸¸BÀÀdÐ-KÐ'LÔMØ�‰×Ñ˜4Ô Ù‰f�T˜3Ó #¨¨c°1°b¸$ÀÐ'FÐ!GÔHÙ‰f�T˜3 Ó%¨¨d°C¸¸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Ó&ˆŒØˆŒÜ—j‘j Ó'ˆŒÜ—z‘z &Ó)ˆ�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;   ø€ Ù�t—y‘y # t¨S°$¸Ó;ˆCá.1�C˜‘F˜C ™FŸK™K›MÐ*Ð:°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§;¡;×#=Ñ#=Ó>ˆØ�h‰hˆÙ‰g�c˜1˜a Ó&¨¯©Ô1Ù‰g�c˜1˜a Ó&¨¯©Ô1Ù‰g�c˜1˜a Ó'¨Ô.Ù‰g�c˜1˜b %Ó(¨$¯(©(Ô3á‰g�d—l‘l A q¨$Ó/°Ô6Ù‰g�d—m‘m Q¨¨D°TÔ:¸KÔHñ 	‰g�d—m‘m Q¨¨DÓ1°4·8±8Õ<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ß   € à× Ñ ˆØ×#Ñ# D§K¡K×$?Ñ$?Ó@ˆØ�h‰hˆÙ‰h�s˜A˜q $Ó'¨¯©Ô2Ù‰h�s˜A˜q $Ó'¨¯©Ô2Ù‰h�s˜A˜q %Ó(¨$Ô/Ù‰h�s˜A˜r 5Ó)¨4¯8©8Ô4á‰h�t—|‘| Q¨¨4Ó0°$Ô7Ù‰h�t—}‘} a¨"¨d°tÔ<¸jÔIñ 	‰h�t—}‘} 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ô_3�x×(Ñ(ô _3ôD:N�×"Ñ"ô :Nôz@@˜(×+Ñ+ô @@ðF ˆzÒØ€H‡M�M˜AÖð r   