+
     Bi                         R t ^ RIHt ^ RIHt ]! R4       ^ RIt^ RIHt ^ RIH	t	H
t
  ! R R4      t ! R	 R
]P                  4      t]R8X  d   ]P                  ! ^R7       R# R# )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                   &   a  ] tR t^t o R tRtV tR# )DummyEditwinc                <    Wn         ^V n        ^V n        RV n        R# )   z>>>N)textindentwidthtabwidthprompt_last_line)selfr   s   &&8/usr/lib/python3.14/idlelib/idle_test/test_parenmatch.py__init__DummyEditwin.__init__   s    	 %    )r   r   r   r   N)__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__s   @r   r	   r	      s     & &r   r	   c                   ^   a  ] tR t^t o ]R 4       t]R 4       tR tR tR t	R t
R tRtV tR	# )
ParenMatchTestc                    \        4       V n        V P                  P                  4        \        V P                  4      V n        \        V P                  4      V n        \        4       V P                  n        R # N)	r   rootwithdrawr   r   r	   editwinr   
text_frameclss   &r   
setUpClassParenMatchTest.setUpClass   sH    4>"388,!%r   c                z    V = V =V P                  P                  4        V P                  P	                  4        V =R # r    )r   r#   r!   update_idletasksdestroyr%   s   &r   tearDownClassParenMatchTest.tearDownClass!   s0    Hck!!#Hr   c                >    V P                   P                  R R4       R# )1.0endN)r   delete)r   s   &r   tearDownParenMatchTest.tearDown(   s    		&r   c                @    \        V P                  4      pR  Vn        V# )c                      R # r     r6   r   r   <lambda>/ParenMatchTest.get_parenmatch.<locals>.<lambda>-   s    $r   )r   r#   bellr   pms   & r   get_parenmatchParenMatchTest.get_parenmatch+   s    %	r   c           	     D   V P                   pV P                  4       pR EFg  w  r4pV P                  VR7      ;_uu_ 4        VP                  RR4       W2n        VP                  RR4       VP                  R4       V P                  RVP                  4       4       VR8X  d#   V P                  VP                  R	R4      R4       V P                  VP                  R	R4      V4       VP                  RR
4       VP                  4        V P                  RVP                  4       4       V P                  VP                  R	R4      R4       VP                  R4       V P                  VP                  R	R4      V4       RRR4       EKj  	  R#   + '       g   i     EK  ; i)z"
Test ParenMatch with each style.
parens)styler/   r0   insertzdef foobar(a, beventz<<parenmatch-check-restore>>paren)N1.10z1.11))openerrE   rE   )defaultrE   rE   )r?   )z1.141.15)rI   1.16)
expression)rF   rI   )rF   rJ   r6   )r   r<   subTestr1   STYLErA   flash_paren_eventassertIn
event_infoassertTupleEqualtag_nextrangetag_prevrangerestore_eventassertNotInassertEqualparen_closed_event)r   r   r;   r@   range1range2s   &     r   test_paren_styles ParenMatchTest.test_paren_styles0   sg    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                2   V P                   pV P                  4       pVP                  RR4       VP                  R4       VP                  RR4       VP	                  R4       VP                  R4       VP                  RR4       VP                  R4       R# )z
Test corner cases in flash_paren_event and paren_closed_event.

Force execution of conditional expressions and alternate paths.
rA   z# Comment.)rB   z
defz	 a, *arg)N)r   r<   rA   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                P   V P                  4       p\        4       Vn        VP                  ^ 4       V P	                  VP                  P
                  4       VP                  P                  4        VP                  ^4       V P                  VP                  P
                  4       R# )    N)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   r6   N)r   r   r   r   classmethodr'   r,   r2   r<   rZ   r]   rf   r   r   r   s   @r   r   r      sK     ( (  '
 DD'&2 2r   r   __main__)	verbosity)__doc__idlelib.parenmatchr   test.supportr   unittestunittest.mockr   tkinterr   r   r	   TestCaser   r   mainr6   r   r   <module>rs      s\   
 * !    & &U2X&& U2p zMMA r   