
    ;e                         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           dS dS )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                       e Zd Zd ZdS )DummyEditwinc                 >    || _         d| _        d| _        d| _        d S )N   z>>>)textindentwidthtabwidthprompt_last_line)selfr   s     8/usr/lib/python3.11/idlelib/idle_test/test_parenmatch.py__init__zDummyEditwin.__init__   s&    	 %    N)__name__
__module____qualname__r    r   r   r
   r
      s#        & & & & &r   r
   c                   X    e Zd Zed             Zed             Zd Zd Zd Zd Z	d Z
dS )	ParenMatchTestc                     t                      | _        | j                                         t          | j                  | _        t          | j                  | _        t                      | j        _        d S N)	r   rootwithdrawr   r   r
   editwinr   
text_frameclss    r   
setUpClasszParenMatchTest.setUpClass   sU    44>>"38,,!%r   c                 v    | ` | `| j                                         | j                                         | `d S r   )r   r   r   update_idletasksdestroyr!   s    r   tearDownClasszParenMatchTest.tearDownClass!   s<    Hck!!###HHHr   c                 <    | j                             dd           d S )N1.0end)r   delete)r   s    r   tearDownzParenMatchTest.tearDown(   s     	&&&&&r   c                 >    t          | j                  }d |_        |S )Nc                      d S 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         }|                                 }dD ]\  }}}|                     |          5  |                    dd           ||_        |                    dd           |                    d           |                     d|                                           |d	k    r*| 	                    |
                    d
d          d           | 	                    |                    d
d          |           |                    dd           |                                 |                     d|                                           |                     |                    d
d          d           |                    d           | 	                    |                    d
d          |           ddd           n# 1 swxY w Y   dS )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  ""&D 	D 	D!E66
 E** D DE5))) H&7888$$W---<doo>O>OPPPH$$))$*<*<We*L*L*:< < <%%**7E::FD D D Hc***  """  !?!%!2!24 4 4  !3!3GU!C!CRHHH%%g...%%**7E::FD D D)D D D D D D D D D D D D D D D	D 	Ds   FGG	G	c                 h   | j         }|                                 }|                    dd           |                    d           |                    dd           |                    d           |                    d           |                    dd           |                    d           dS )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  ""Hm,,,
g&&&Hg&&&
W%%%
g&&&Hk***
g&&&&&r   c                 V   |                                  }t                      |_        |                    d           |                     |j        j                   |j                                         |                    d           |                     |j        j                   d S )Nr      )r3   r   rJ   handle_restore_timer
assertTruecalled
reset_mockassertFalser1   s     r   test_handle_restore_timerz(ParenMatchTest.test_handle_restore_timere   s      ""66
"""(/000
##%%%
""")011111r   N)r   r   r   classmethodr#   r'   r,   r3   rP   rR   rZ   r   r   r   r   r      s        ( ( [(   [' ' '  
 D  D  DD' ' '&2 2 2 2 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 U2 U2 U2 U2X& U2 U2 U2p zHMA r   