Ë
    #´˜jz#  ã                   ó´   — d Z ddlmZ ddlZddlmZ ddlmZmZ ddl	m
Z
  G d„ d«      Z G d	„ d
ej                  «      Zedk(  r ej                  d¬«       yy)zTest hyperparser, coverage 98%.é    )ÚHyperParserN)Úrequires)ÚTkÚText)ÚEditorWindowc                   óB   — e Zd Zd„ Zej
                  Zej                  Zy)ÚDummyEditwinc                 óJ   — || _         d| _        d| _        d| _        d| _        y )Né   ú>>>)é2   iô  iè  )ÚtextÚindentwidthÚtabwidthÚprompt_last_lineÚnum_context_lines)Úselfr   s     ú4lib/python3.12/idlelib/idle_test/test_hyperparser.pyÚ__init__zDummyEditwin.__init__
   s(   € ØˆŒ	ØˆÔØˆŒØ %ˆÔØ!.ˆÕó    N)Ú__name__Ú
__module__Ú__qualname__r   r   Ú_build_char_in_string_funcÚis_char_in_string© r   r   r	   r	   	   s!   „ ò/ð ".×!HÑ!HÐØ$×6Ñ6Ñr   r	   c                   ól   — e Zd ZdZed„ «       Zed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zy)ÚHyperParserTestu#  """This is a module docstring"""
# this line is a comment
x = "this is a string"
y = 'this is also a string'
l = [i for i in range(10)]
m = [py*py for # comment
       py in l]
x.__len__
z = ((r'asdf')+('a')))
[x for x in
for = False
clichÃ© = "this is a string with unicode, what a clichÃ©"c                 óÔ   — t        d«       t        «       | _        | j                  j                  «        t	        | j                  «      | _        t        | j
                  «      | _        y )NÚgui)r   r   ÚrootÚwithdrawr   r   r	   Úeditwin©Úclss    r   Ú
setUpClasszHyperParserTest.setUpClass%   sA   € ä�ŒÜ“4ˆŒØ�‰×ÑÔÜ˜Ÿ™“>ˆŒÜ" 3§8¡8Ó,ˆ�r   c                 óD   — | ` | `| j                  j                  «        | `y )N)r   r#   r!   Údestroyr$   s    r   ÚtearDownClasszHyperParserTest.tearDownClass-   s    € àˆH�c�kØ�‰×ÑÔØ‰Hr   c                 óP   — | j                   j                  d| j                  «       y )NÚinsert)r   r+   Úcode©r   s    r   ÚsetUpzHyperParserTest.setUp3   s   € Ø�	‰	×Ñ˜ 4§9¡9Õ-r   c                 ó^   — | j                   j                  dd«       d| j                  _        y )Nú1.0Úendr   )r   Údeleter#   r   r-   s    r   ÚtearDownzHyperParserTest.tearDown6   s"   € Ø�	‰	×Ñ˜ Ô&Ø(-ˆ�‰Õ%r   c                 ó.   — t        | j                  |«      S )z>
        Return a parser object with index at 'index'
        )r   r#   )r   Úindexs     r   Ú
get_parserzHyperParserTest.get_parser:   s   € ô ˜4Ÿ<™<¨Ó/Ð/r   c                 óB  — | j                  t        «      5 }| j                  j                  ddd«       | j	                  d«      }ddd«       | j                  dt        j                  «      «       d| j                  _	        | j	                  d«      }| j                  |j                  | j                  j                  dd«      «       | j                  j                  d| j                  j                  dd«      d	z  «       | j	                  d
«      }y# 1 sw Y   ŒÑxY w)z6
        test corner cases in the init method
        Úconsoler0   z1.endz1.5NÚprecedesÚ r1   é   z54.5)ÚassertRaisesÚ
ValueErrorr   Útag_addr6   ÚassertInÚstrÚ	exceptionr#   r   ÚassertEqualÚrawtextÚgetr+   )r   ÚveÚps      r   Ú	test_initzHyperParserTest.test_init@   sØ   € ð ×ÑœzÔ*¨bØ�I‰I×Ñ˜i¨°Ô8Ø—‘ Ó&ˆA÷ +ð 	�‰�j¤# b§l¡lÓ"3Ô4ð )+ˆ�‰Ô%ð �O‰O˜EÓ"ˆØ×Ñ˜Ÿ™ D§I¡I§M¡M°%¸Ó$?Ô@ð 	�	‰	×Ñ˜ §	¡	§¡¨e°UÓ ;¸AÑ =Ô>Ø�O‰O˜FÓ#‰÷ +Ð*ús   –/DÄDc                 ó>  — | j                   } |d«      }| j                  |j                  «       «        |d«      }| j                  |j                  «       «        |d«      }| j                  |j                  «       «        |d«      }| j                  |j                  «       «        |d«      }| j                  |j                  «       «        |d«      }| j                  |j                  «       «        |d«      }| j                  |j                  «       «       y )Nr0   z1.4z2.3z3.3z3.7z4.6z12.54)r6   ÚassertFalseÚis_in_stringÚ
assertTrue©r   rD   rF   s      r   Útest_is_in_stringz!HyperParserTest.test_is_in_stringT   sÕ   € Ø�o‰oˆá�‹JˆØ×Ñ˜Ÿ™Ó)Ô*Ù�‹JˆØ�‰˜Ÿ™Ó(Ô)Ù�‹JˆØ×Ñ˜Ÿ™Ó)Ô*Ù�‹JˆØ×Ñ˜Ÿ™Ó)Ô*Ù�‹JˆØ�‰˜Ÿ™Ó(Ô)Ù�‹JˆØ�‰˜Ÿ™Ó(Ô)Ù�‹LˆØ�‰˜Ÿ™Ó(Õ)r   c                 óð  — | j                   } |d«      }| j                  |j                  «       «        |d«      }| j                  |j                  «       «        |d«      }| j                  |j                  «       «        |d«      }| j                  |j                  «       «        |d«      }| j                  |j                  «       «        |d«      }| j                  |j                  «       «       y )Nr0   z1.1z2.5z3.4z3.6z4.14)r6   rK   Ú
is_in_coderI   rL   s      r   Útest_is_in_codezHyperParserTest.test_is_in_codef   sµ   € Ø�o‰oˆá�‹JˆØ�‰˜Ÿ™›Ô'Ù�‹JˆØ×Ñ˜Ÿ™›Ô(Ù�‹JˆØ×Ñ˜Ÿ™›Ô(Ù�‹JˆØ�‰˜Ÿ™›Ô'Ù�‹JˆØ×Ñ˜Ÿ™›Ô(Ù�‹KˆØ×Ñ˜Ÿ™›Õ(r   c                 óf  — | j                   }d„ }d„ } |d«      }| j                   ||«      «       | j                   ||«      «        |d«      }| j                   ||«      d«       | j                   ||«       ||«      «        |d«      }| j                   ||«      d«       | j                   ||«       ||«      «        |d«      }| j                   ||«      d	«       | j                   ||«      «        |d
«      }| j                   ||«      «       | j                   ||«      «       y )Nc                 ó&   — | j                  d¬«      S )NF©Ú	mustclose©Úget_surrounding_brackets©Úparsers    r   Úwithout_mustclosezGHyperParserTest.test_get_surrounding_bracket.<locals>.without_mustclosey   s   € ð ×2Ñ2¸UÐ2ÓCÐCr   c                 ó&   — | j                  d¬«      S )NTrS   rU   rW   s    r   Úwith_mustclosezDHyperParserTest.test_get_surrounding_bracket.<locals>.with_mustclose~   s   € ð ×2Ñ2¸TÐ2ÓBÐBr   z3.2z5.6)z5.4ú5.25z5.23)z5.21z5.24z6.15)z6.4z6.endz9.end)r6   ÚassertIsNoneÚassertTupleEqual)r   rD   rY   r[   rF   s        r   Útest_get_surrounding_bracketz,HyperParserTest.test_get_surrounding_bracketv   s!  € Ø�o‰oˆò	Dò
	Cñ
 �‹JˆØ×Ñ™.¨Ó+Ô,Ø×ÑÑ+¨AÓ.Ô/á�‹JˆØ×ÑÑ/°Ó2°OÔDØ×ÑÑ/°Ó2±NÀ1Ó4EÔFá�‹KˆØ×ÑÑ/°Ó2Ð4DÔEØ×ÑÑ/°Ó2±NÀ1Ó4EÔFá�‹KˆØ×ÑÑ/°Ó2Ð4DÔEØ×Ñ™.¨Ó+Ô,á�‹LˆØ×Ñ™.¨Ó+Ô,Ø×ÑÑ+¨AÓ.Õ/r   c                 óÌ  — | j                   } |d«      }| j                  |j                  «       d«        |d«      }| j                  t        «      5 }|j                  «        d d d «       | j                  dt        j                  «      «        |d«      }| j                  |j                  «       d«        |d«      }| j                  |j                  «       d«        |d	«      }| j                  |j                  «       d
«        |d«      }| j                  |j                  «       d«        |d«      }| j                  |j                  «       d«        |d«      }| j                  |j                  «       d«        |d«      }| j                  t        «      5 }|j                  «        d d d «       | j                  dt        |j                  «      «        |d«      }| j                  |j                  «       d
«        |d«      }| j                  |j                  «       d
«        |d«      }| j                  |j                  «       d
«        |d«      }| j                  |j                  «       d
«        |d«      }| j                  |j                  «       d«        |d«      }| j                  |j                  «       d«       y # 1 sw Y   �ŒkxY w# 1 sw Y   �Œ-xY w)Nz4.2zy z4.7zis inside a coder\   z	range(10)z6.7Úpyz6.8r:   z7.9z8.endz	x.__len__z9.13zr'asdf'z9.17z10.0z10.6z10.11z11.3z11.11ÚFalsez12.6õ   clichÃ©)r6   rB   Úget_expressionr<   r=   r?   r@   rA   )r   rD   rF   rE   s       r   Útest_get_expressionz#HyperParserTest.test_get_expression—   s\  € Ø�o‰oˆá�‹JˆØ×Ñ˜×)Ñ)Ó+¨TÔ2á�‹JˆØ×ÑœzÔ*¨bØ×ÑÔ÷ +à�‰Ð(¬#¨b¯l©lÓ*;Ô<á�‹KˆØ×Ñ˜×)Ñ)Ó+¨[Ô9á�‹JˆØ×Ñ˜×)Ñ)Ó+¨TÔ2á�‹JˆØ×Ñ˜×)Ñ)Ó+¨RÔ0á�‹JˆØ×Ñ˜×)Ñ)Ó+¨TÔ2á�‹LˆØ×Ñ˜×)Ñ)Ó+¨[Ô9á�‹KˆØ×Ñ˜×)Ñ)Ó+¨YÔ7á�‹KˆØ×ÑœzÔ*¨bØ×ÑÔ÷ +à�‰Ð(¬#¨b¯l©lÓ*;Ô<á�‹KˆØ×Ñ˜×)Ñ)Ó+¨RÔ0á�‹KˆØ×Ñ˜×)Ñ)Ó+¨RÔ0á�‹LˆØ×Ñ˜×)Ñ)Ó+¨RÔ0á�‹KˆØ×Ñ˜×)Ñ)Ó+¨RÔ0á�‹LˆØ×Ñ˜×)Ñ)Ó+¨WÔ5á�‹KˆØ×Ñ˜×)Ñ)Ó+¨YÕ7÷W +Ñ*ú÷. +Ñ*ús   ÁKÆKËKËK#c                 ó¨  — d„ }| j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d	«      «       | j                   |d
«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                  t        j                  ddd«      t        d«      «       | j                  t        j                  ddd«      t        d«      «       | j                  t        j                  ddd«      t        d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d«      «       | j                   |d «      «       | j                   |d!«      «       y )"Nc                 ó¸   — t        j                  | dt        | «      «      }|t        | «      k(  ry|dk(  rydj                  |t        | «      «      }t	        |«      ‚)Nr   TFz'Unexpected result: {} (expected 0 or {})r   Ú_eat_identifierÚlenÚformatÚ	Exception)Ú	candidateÚresultÚerr_msgs      r   Úis_valid_idz8HyperParserTest.test_eat_identifier.<locals>.is_valid_idÌ   sY   € Ü ×0Ñ0°¸A¼sÀ9»~ÓNˆFØœ˜Y›Ò'ØØ˜1’ØàC×JÑJØœC 	›Nó�ô   Ó(Ð(r   Ú2notidÚvalid_idÚ	_valid_idÚ	valid_id_Ú
_2valid_idÚTruerb   ÚNoneÚforÚimportÚreturnÚclicherc   u   aÙ¢Ú2au   Ù¢au   aÂ²z+ varr   é   Úvarz+varr;   z.varÚ+Ú Ú:Ú?Ú^Ú\Ú"z
"a string")rI   rK   rB   r   rh   ri   )r   ro   s     r   Útest_eat_identifierz#HyperParserTest.test_eat_identifierË   sG  € ò
	)ð 	×Ñ™ XÓ.Ô/ð 	�‰™ JÓ/Ô0Ø�‰™ KÓ0Ô1Ø�‰™ KÓ0Ô1Ø�‰™ LÓ1Ô2ð 	�‰™ FÓ+Ô,Ø�‰™ GÓ,Ô-Ø�‰™ FÓ+Ô,ð 	×Ñ™ UÓ+Ô,Ø×Ñ™ XÓ.Ô/Ø×Ñ™ XÓ.Ô/ð 	�‰™ HÓ-Ô.Ø�‰™ IÓ.Ô/Ø�‰™ EÓ*Ô+ð 	×Ñ™ TÓ*Ô+Ø×Ñ™ UÓ+Ô,Ø×Ñ™ UÓ+Ô,ð 	×Ñœ×4Ñ4°W¸aÀÓCÄSÈÃZÔPØ×Ñœ×4Ñ4°V¸QÀÓBÄCÈÃJÔOØ×Ñœ×4Ñ4°V¸QÀÓBÄCÈÃJÔOð 	×Ñ™ SÓ)Ô*Ø×Ñ™ SÓ)Ô*Ø×Ñ™ SÓ)Ô*Ø×Ñ™ SÓ)Ô*Ø×Ñ™ SÓ)Ô*Ø×Ñ™ TÓ*Ô+Ø×Ñ™ SÓ)Ô*Ø×Ñ™ \Ó2Õ3r   c           	      óœ  — t         j                  }t        dd«      D �],  }| j                   |d|z  d|«      |«       | j                   |d|z  d|«      |«       | j                   |dd|dz
  z  z   d|«      |«       | j                   |dd|dz
  z  z   d|«      |«       | j                   |dd|dz
  z  z   d|«      |«       | j                   |d|dz
  z  dz   d|«      |«       | j                   |d|z  d|«      d«       | j                   |dd|dz
  z  z   d|«      d«       | j                   |dd|dz
  z  z   d|«      d«       �Œ/ y )Né   é   Úar   ô   Ã©Ú2r~   )r   rh   ÚrangerB   )r   Úeat_idÚlengths      r   Ú#test_eat_identifier_various_lengthsz3HyperParserTest.test_eat_identifier_various_lengths  s^  € Ü×,Ñ,ˆä˜A˜r—lˆFØ×Ñ™V C¨&¡L°!°VÓ<¸fÔEØ×Ñ™V D¨6¡M°1°fÓ=¸vÔFØ×Ñ™V C¨#°¸!±Ñ*<Ñ$<¸aÀÓHÈ&ÔQØ×Ñ™V D¨3°&¸1±*Ñ+=Ñ$=¸qÀ&ÓIÈ6ÔRØ×Ñ™V D¨3°&¸1±*Ñ+=Ñ$=¸qÀ&ÓIÈ6ÔRØ×Ñ™V D¨F°Q©JÑ$7¸#Ñ$=¸qÀ&ÓIÈ6ÔRØ×Ñ™V C¨&¡L°!°VÓ<¸aÔ@Ø×Ñ™V C¨#°¸!±Ñ*<Ñ$<¸aÀÓHÈ!ÔLØ×Ñ™V C¨$°&¸1±*Ñ*=Ñ$=¸qÀ&ÓIÈ1ÖMñ #r   N)r   r   r   r,   Úclassmethodr&   r)   r.   r3   r6   rG   rM   rP   r_   re   r…   r�   r   r   r   r   r      sk   „ ðHð 	ð ñ-ó ð-ð ñó ðò
.ò.ò0ò$ò(*ò$)ò 0òB28òh74órNr   r   Ú__main__é   )Ú	verbosity)Ú__doc__Úidlelib.hyperparserr   ÚunittestÚtest.supportr   Útkinterr   r   Úidlelib.editorr   r	   ÚTestCaser   r   Úmainr   r   r   Ú<module>rœ      sU   ðÙ !å +Û Ý !ß Ý '÷	7ñ 	7ô{N�h×'Ñ'ô {Nð| ˆzÒØ€H‡M�M˜AÖð r   