o
    JAfŲ  ć                   @   s   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	 d	ZG d
d dejZedkr@ejdd dS dS )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)ŚrequiresZguiN)ŚMock)ŚTkŚTextc                   @   s   e Zd Zdd ZdS )ŚDummyEditwinc                 C   s   || _ d| _d| _d| _d S )Né   z>>>)ŚtextZindentwidthZtabwidthZprompt_last_line)Śselfr	   © r   ś8/usr/lib/python3.10/idlelib/idle_test/test_parenmatch.pyŚ__init__   s   
zDummyEditwin.__init__N)Ś__name__Ś
__module__Ś__qualname__r   r   r   r   r   r      s    r   c                   @   sL   e Zd Zedd Zedd Zdd Zdd Zd	d
 Zdd Z	dd Z
dS )ŚParenMatchTestc                 C   s8   t  | _| j ”  t| j| _t| j| _t | j_d S ©N)	r   ŚrootZwithdrawr   r	   r   Śeditwinr   Z
text_frame©Śclsr   r   r   Ś
setUpClass   s
   
zParenMatchTest.setUpClassc                 C   s$   | ` | `| j ”  | j ”  | `d S r   )r	   r   r   Zupdate_idletasksZdestroyr   r   r   r   ŚtearDownClass!   s   

zParenMatchTest.tearDownClassc                 C   s   | j  dd” d S )Nś1.0Śend)r	   Śdelete)r
   r   r   r   ŚtearDown(   s   zParenMatchTest.tearDownc                 C   s   t | j}dd |_|S )Nc                   S   s   d S r   r   r   r   r   r   Ś<lambda>-   s    z/ParenMatchTest.get_parenmatch.<locals>.<lambda>)r   r   Zbell©r
   Śpmr   r   r   Śget_parenmatch+   s   

zParenMatchTest.get_parenmatchc              	   C   s  | j }|  ” }dD ]z\}}}| j|dg | dd” ||_| dd” | d” |  d| ” ” |d	kr?|  	| 
d
d”d” |  	| d
d”|” | dd” | ”  |  d| ” ” |  | d
d”d” | d” |  	| d
d”|” W d   n1 s~w   Y  q	dS )z2
        Test ParenMatch with each style.
        ))Śopener©ś1.10z1.11r"   )Śdefaultr"   r"   )Śparens)z1.14ś1.15)r&   ś1.16)Z
expression)r#   r&   )r#   r'   )Śstyler   r   Śinsertzdef foobar(a, bŚeventz<<parenmatch-check-restore>>r%   Zparenr"   ś)r   N)r	   r    ZsubTestr   ZSTYLEr)   Śflash_paren_eventZassertInZ
event_infoZassertTupleEqualZtag_nextrangeZtag_prevrangeŚrestore_eventZassertNotInZassertEqualŚparen_closed_event)r
   r	   r   r(   Zrange1Zrange2r   r   r   Śtest_paren_styles0   s:   
’’’
’ģūz ParenMatchTest.test_paren_stylesc                 C   s^   | 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	   r    r)   r.   r,   )r
   r	   r   r   r   r   Śtest_paren_cornerR   s   


z ParenMatchTest.test_paren_cornerc                 C   sN   |   ” }t |_| d” |  |jj” |j ”  | d” |  |jj” d S )Nr   é   )r    r   r-   Zhandle_restore_timerZ
assertTrueZcalledZ
reset_mockZassertFalser   r   r   r   Śtest_handle_restore_timere   s   


z(ParenMatchTest.test_handle_restore_timerN)r   r   r   Śclassmethodr   r   r   r    r/   r0   r2   r   r   r   r   r      s    

"r   Ś__main__é   )Ś	verbosity)Ś__doc__Zidlelib.parenmatchr   Ztest.supportr   ZunittestZunittest.mockr   Śtkinterr   r   r   ZTestCaser   r   Śmainr   r   r   r   Ś<module>   s    X’