o
    JAf                     @   s   	 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 )    )
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 )N))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   )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 )Nr)   z# Comment.)r*   z
defz	 a, *arg))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)Zidlelib.parenmatchr   Ztest.supportr   ZunittestZunittest.mockr   tkinterr   r   r   ZTestCaser   r   mainr   r   r   r   <module>   s    X