
    /hh                         S r SSKJr  SSKJr  \" S5        SSKrSSKJr  SSKJ	r	J
r
   " S S	5      r " S
 S\R                  5      r\S:X  a  \R                  " SS9  gg)zTest 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                       \ rS rSrS rSrg)DummyEditwin   c                 :    Xl         SU l        SU l        SU l        g )N   z>>>)textindentwidthtabwidthprompt_last_line)selfr   s     J/opt/python-3.13.8/usr/lib/python3.13/idlelib/idle_test/test_parenmatch.py__init__DummyEditwin.__init__   s    	 %    )r   r   r   r   N)__name__
__module____qualname____firstlineno__r   __static_attributes__ r   r   r
   r
      s    &r   r
   c                   R    \ rS rSr\S 5       r\S 5       rS rS rS r	S r
S rS	rg
)ParenMatchTest   c                     [        5       U l        U R                  R                  5         [        U R                  5      U l        [        U R                  5      U l        [        5       U R                  l        g N)	r   rootwithdrawr   r   r
   editwinr   
text_frameclss    r   
setUpClassParenMatchTest.setUpClass   sH    4>"388,!%r   c                 x    U ? U ?U R                  R                  5         U R                  R	                  5         U ?g r!   )r   r$   r"   update_idletasksdestroyr&   s    r   tearDownClassParenMatchTest.tearDownClass!   s0    Hck!!#Hr   c                 <    U R                   R                  SS5        g )N1.0end)r   delete)r   s    r   tearDownParenMatchTest.tearDown(   s    		&r   c                 @    [        U R                  5      nS Ul        U$ )Nc                      g r!   r   r   r   r   <lambda>/ParenMatchTest.get_parenmatch.<locals>.<lambda>-   s    $r   )r   r$   bellr   pms     r   get_parenmatchParenMatchTest.get_parenmatch+   s    %	r   c                 &   U R                   nU R                  5       nS GH[  u  p4nU R                  US9   UR                  SS5        X2l        UR                  SS5        UR                  S5        U R                  SUR                  5       5        US	:X  a"  U R                  UR                  S
S5      S5        U R                  UR                  S
S5      U5        UR                  SS5        UR                  5         U R                  SUR                  5       5        U R                  UR                  S
S5      S5        UR                  S5        U R                  UR                  S
S5      U5        SSS5        GM^     g! , (       d  f       GMq  = f)z"
Test ParenMatch with each style.
))opener1.10z1.11r@   )defaultr@   r@   )parens)z1.141.15)rD   1.16)
expression)rA   rD   )rA   rE   )styler0   r1   insertzdef foobar(a, beventz<<parenmatch-check-restore>>rC   parenr@   )r   N)r   r<   subTestr2   STYLErH   flash_paren_eventassertIn
event_infoassertTupleEqualtag_nextrangetag_prevrangerestore_eventassertNotInassertEqualparen_closed_event)r   r   r;   rG   range1range2s         r   test_paren_styles ParenMatchTest.test_paren_styles0   sa    yy  "&D!E6
 E*E5) H&78$$W-<doo>OPH$))$*<*<We*L*:<%%**7E:FD Hc*  "  !?!%!24  !3!3GU!CRH%%g.%%**7E:FD) +*&D
 +*s   D=F  
F	c                 0   U R                   nU R                  5       nUR                  SS5        UR                  S5        UR                  SS5        UR	                  S5        UR                  S5        UR                  SS5        UR                  S5        g)z
Test corner cases in flash_paren_event and paren_closed_event.

Force execution of conditional expressions and alternate paths.
rH   z# Comment.)rI   z
defz	 a, *arg)N)r   r<   rH   rW   rN   )r   r   r;   s      r   test_paren_corner ParenMatchTest.test_paren_cornerR   s}     yy  "Hm,
g&Hg&
W%
g&Hk*
g&r   c                 N   U R                  5       n[        5       Ul        UR                  S5        U R	                  UR                  R
                  5        UR                  R                  5         UR                  S5        U R                  UR                  R
                  5        g )Nr      )r<   r   rT   handle_restore_timer
assertTruecalled
reset_mockassertFalser:   s     r   test_handle_restore_timer(ParenMatchTest.test_handle_restore_timere   sz      "6
"((//0
##%
"))001r   r   N)r   r   r   r   classmethodr(   r-   r3   r<   rZ   r]   rf   r   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>rt      s\   
 * !    & &U2X&& U2p zMMA r   