B � f� �@s�dZddlmZddlmZed�ddlZddlmZddlm Z m Z Gdd �d �Z Gd d �d ej �Z ed kr|ejd d�dS)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)�requiresZguiN)�Mock)�Tk�Textc@seZdZdd�ZdS)� DummyEditwincCs||_d|_d|_d|_dS)N�z>>>)�textZ indentwidthZtabwidthZprompt_last_line)�selfr �r �F/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_parenmatch.py�__init__szDummyEditwin.__init__N)�__name__� __module__� __qualname__r r r r r rsrc@sLeZdZedd��Zedd��Zdd�Zdd�Zd d �Zd d �Z d d�Z dS)�ParenMatchTestcCs8t�|_|j��t|j�|_t|j�|_t�|j_dS)N) r�rootZwithdrawrr r�editwinrZ text_frame)�clsr r r � setUpClasss    zParenMatchTest.setUpClasscCs$|`|`|j��|j��|`dS)N)r rrZupdate_idletasksZdestroy)rr r r � tearDownClass!s  zParenMatchTest.tearDownClasscCs|j�dd�dS)Nz1.0�end)r �delete)r r r r �tearDown(szParenMatchTest.tearDowncCst|j�}dd�|_|S)NcSsdS)Nr r r r r �-�z/ParenMatchTest.get_parenmatch..)rrZbell)r �pmr r r �get_parenmatch+s  zParenMatchTest.get_parenmatchc Cs�|j}|��}x�dD]�\}}}|j|d���|�dd�||_|�dd�|�d�|�d|���|d kr�|� |� d d�d �|� |� d d�|�|�dd �|� �|� d|���|�|� d d�d �|�d�|� |� d d�|�WdQRXqWdS)z2 Test ParenMatch with each style. ))�opener)z1.10z1.11)z1.10z1.11)�default)z1.10z1.11)z1.10z1.11)�parens)z1.14z1.15)z1.15z1.16)Z expression)z1.10z1.15)z1.10z1.16)�stylez1.0r�insertzdef foobar(a, b�eventz<>r Zparen)z1.10z1.11�)r N)r rZsubTestrZSTYLEr"�flash_paren_eventZassertInZ event_infoZassertTupleEqualZ tag_nextrangeZ tag_prevrange� restore_eventZ assertNotInZ assertEqual�paren_closed_event)r r rr!Zrange1Zrange2r r r �test_paren_styles0s.      z ParenMatchTest.test_paren_stylescCs^|j}|��}|�dd�|�d�|�dd�|�d�|�d�|�dd�|�d�dS)z� Test corner cases in flash_paren_event and paren_closed_event. These cases force conditional expression and alternate paths. r"z# this is a commen)r#z defz a, *arg)N)r rr"r'r%)r r rr r r �test_paren_cornerRs      z ParenMatchTest.test_paren_cornercCsN|��}t�|_|�d�|�|jj�|j��|�d�|�|jj�dS)Nr�)rrr&Zhandle_restore_timerZ assertTrueZcalledZ reset_mockZ assertFalse)r rr r r �test_handle_restore_timeres   z(ParenMatchTest.test_handle_restore_timerN) rrr� classmethodrrrrr(r)r+r r r r rs  "r�__main__�)� verbosity)�__doc__Zidlelib.parenmatchrZ test.supportrZunittestZ unittest.mockrZtkinterrrrZTestCaserr�mainr r r r �s   X