Ë
    #´˜jØ  ã                   óÄ   — d Z ddlmZ ddlmZ  ed«       ddlZddlmZ ddlm	Z	m
Z
  G d„ d	«      Z G d
„ dej                  «      Zedk(  r ej                  d¬«       yy)z¥Test parenmatch, coverage 91%.

This must currently be a gui test because ParenMatch methods use
several text methods not defined on idlelib.idle_test.mock_tk.Text.
é    )Ú
ParenMatch)ÚrequiresÚguiN)ÚMock)ÚTkÚTextc                   ó   — e Zd Zd„ Zy)ÚDummyEditwinc                 ó<   — || _         d| _        d| _        d| _        y )Né   z>>>)ÚtextÚindentwidthÚtabwidthÚprompt_last_line)Úselfr   s     ú3lib/python3.12/idlelib/idle_test/test_parenmatch.pyÚ__init__zDummyEditwin.__init__   s    € ØˆŒ	ØˆÔØˆŒØ %ˆÕó    N)Ú__name__Ú
__module__Ú__qualname__r   © r   r   r
   r
      s   „ ó&r   r
   c                   óJ   — e Zd Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y)	ÚParenMatchTestc                 óð   — t        «       | _        | j                  j                  «        t        | j                  «      | _        t        | j                  «      | _        t        «       | j                  _        y ©N)	r   ÚrootÚwithdrawr   r   r
   Úeditwinr   Ú
text_frame©Úclss    r   Ú
setUpClasszParenMatchTest.setUpClass   sH   € ä“4ˆŒØ�‰×ÑÔÜ˜Ÿ™“>ˆŒÜ" 3§8¡8Ó,ˆŒÜ!%£ˆ�‰Õr   c                 óx   — | ` | `| j                  j                  «        | j                  j	                  «        | `y r   )r   r   r   Úupdate_idletasksÚdestroyr!   s    r   ÚtearDownClasszParenMatchTest.tearDownClass!   s0   € àˆH�c�kØ�‰×!Ñ!Ô#Ø�‰×ÑÔØ‰Hr   c                 ó<   — | j                   j                  dd«       y )Nú1.0Úend)r   Údelete)r   s    r   ÚtearDownzParenMatchTest.tearDown(   s   € Ø�	‰	×Ñ˜ Õ&r   c                 ó@   — t        | j                  «      }d„ |_        |S )Nc                   ó   — y r   r   r   r   r   Ú<lambda>z/ParenMatchTest.get_parenmatch.<locals>.<lambda>-   s   € ˜$r   )r   r   Úbell©r   Úpms     r   Úget_parenmatchzParenMatchTest.get_parenmatch+   s   € Ü˜Ÿ™Ó%ˆÙˆŒØˆ	r   c                 ó  — | j                   }| j                  «       }dD �]^  \  }}}| j                  |¬«      5  |j                  dd«       ||_        |j                  dd«       |j                  d«       | j                  d|j                  «       «       |d	k(  r"| j                  |j                  d
d«      d«       | j                  |j                  d
d«      |«       |j                  dd«       |j                  «        | j                  d|j                  «       «       | j                  |j                  d
d«      d«       |j                  d«       | j                  |j                  d
d«      |«       ddd«       �Œa y# 1 sw Y   �ŒmxY w)z2
        Test ParenMatch with each style.
        ))Úopener©ú1.10z1.11r6   )Údefaultr6   r6   )Úparens)z1.14ú1.15)r:   ú1.16)Ú
expression)r7   r:   )r7   r;   )Ústyler)   r*   Úinsertzdef foobar(a, bÚeventz<<parenmatch-check-restore>>r9   Úparenr6   Ú)r   N)r   r3   ÚsubTestr+   ÚSTYLEr>   Úflash_paren_eventÚassertInÚ
event_infoÚassertTupleEqualÚtag_nextrangeÚtag_prevrangeÚrestore_eventÚassertNotInÚassertEqualÚparen_closed_event)r   r   r2   r=   Úrange1Úrange2s         r   Útest_paren_stylesz ParenMatchTest.test_paren_styles0   se  € ð �y‰yˆØ× Ñ Ó"ˆô&DÑ!ˆE�6˜6ð
 —‘ E�Õ*Ø—‘˜E 5Ô)Ø �”Ø—‘˜HÐ&7Ô8à×$Ñ$ WÔ-Ø—‘Ð<¸d¿o¹oÓ>OÔPØ˜HÒ$Ø×)Ñ)¨$×*<Ñ*<¸WÀeÓ*LØ*:ô<à×%Ñ%Ø×*Ñ*¨7°EÓ:¸FôDð —‘˜H cÔ*Ø× Ñ Ô"Ø× Ñ Ð!?Ø!%§¡Ó!2ô4à× Ñ  ×!3Ñ!3°G¸UÓ!CÀRÔHà×%Ñ% gÔ.Ø×%Ñ%Ø×*Ñ*¨7°EÓ:¸FôD÷) +Ñ*ñ&D÷
 +Ñ*ús   ¹D=FÆF	c                 ó0  — | j                   }| j                  «       }|j                  dd«       |j                  d«       |j                  dd«       |j	                  d«       |j                  d«       |j                  dd«       |j                  d«       y)z™
        Test corner cases in flash_paren_event and paren_closed_event.

        Force execution of conditional expressions and alternate paths.
        r>   z# Comment.)r?   z
defz	 a, *arg)N)r   r3   r>   rM   rD   )r   r   r2   s      r   Útest_paren_cornerz ParenMatchTest.test_paren_cornerR   s}   € ð �y‰yˆØ× Ñ Ó"ˆà�‰�H˜mÔ,Ø
×Ñ˜gÔ&à�‰�H˜gÔ&Ø
×Ñ˜WÔ%Ø
×Ñ˜gÔ&à�‰�H˜kÔ*Ø
×Ñ˜gÕ&r   c                 óN  — | j                  «       }t        «       |_        |j                  d«       | j	                  |j                  j
                  «       |j                  j                  «        |j                  d«       | j                  |j                  j
                  «       y )Nr   é   )r3   r   rJ   Úhandle_restore_timerÚ
assertTrueÚcalledÚ
reset_mockÚassertFalser1   s     r   Útest_handle_restore_timerz(ParenMatchTest.test_handle_restore_timere   sz   € Ø× Ñ Ó"ˆÜ›6ˆÔØ
×Ñ Ô"Ø�‰˜×(Ñ(×/Ñ/Ô0Ø
×Ñ×#Ñ#Ô%Ø
×Ñ Ô"Ø×Ñ˜×)Ñ)×0Ñ0Õ1r   N)r   r   r   Úclassmethodr#   r'   r,   r3   rP   rR   rZ   r   r   r   r   r      sC   „ àñ(ó ð(ð ñó ðò'òò
 DòD'ó&2r   r   Ú__main__é   )Ú	verbosity)Ú__doc__Úidlelib.parenmatchr   Útest.supportr   ÚunittestÚunittest.mockr   Útkinterr   r   r
   ÚTestCaser   r   Úmainr   r   r   Ú<module>rg      s^   ðñõ
 *Ý !Ù ˆ„ã Ý ß ÷&ñ &ôU2�X×&Ñ&ô U2ðp ˆzÒØ€H‡M�M˜AÖð r   