B � fz#�@sxdZddlmZddlZddlmZddlmZmZddl m Z Gdd�d�Z Gd d �d ej �Z ed krtejd d �dS)zTest hyperparser, coverage 98%.�)� HyperParserN)�requires)�Tk�Text)� EditorWindowc@s eZdZdd�ZejZejZdS)� DummyEditwincCs"||_d|_d|_d|_d|_dS)N�z>>>)�2i�i�)�textZ indentwidthZtabwidth�prompt_last_lineZnum_context_lines)�selfr �r �G/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_hyperparser.py�__init__ s zDummyEditwin.__init__N)�__name__� __module__� __qualname__rrZ_build_char_in_string_funcZis_char_in_stringr r r rr src@sxeZdZdZedd��Zedd��Zdd�Zdd �Zd d �Z d d �Z dd�Z dd�Z dd�Z dd�Zdd�Zdd�ZdS)�HyperParserTestu#"""This is a module docstring""" # this line is a comment x = "this is a string" y = 'this is also a string' l = [i for i in range(10)] m = [py*py for # comment py in l] x.__len__ z = ((r'asdf')+('a'))) [x for x in for = False cliché = "this is a string with unicode, what a cliché"cCs6td�t�|_|j��t|j�|_t|j�|_dS)NZgui)rr�rootZwithdrawrr r�editwin)�clsr r r� setUpClass%s   zHyperParserTest.setUpClasscCs|`|`|j��|`dS)N)r rrZdestroy)rr r r� tearDownClass-s zHyperParserTest.tearDownClasscCs|j�d|j�dS)N�insert)r r�code)r r r r�setUp3szHyperParserTest.setUpcCs|j�dd�d|j_dS)Nz1.0�endz>>>)r �deleterr )r r r r�tearDown6szHyperParserTest.tearDowncCs t|j|�S)z> Return a parser object with index at 'index' )rr)r �indexr r r� get_parser:szHyperParserTest.get_parserc Cs�|�t�� }|j�ddd�|�d�}WdQRX|�dt|j��d|j_ |�d�}|� |j |j� dd��|j� d|j� dd�d �|�d �}dS) z6 test corner cases in the init method Zconsolez1.0z1.endz1.5NZprecedes�r�z54.5)� assertRaises� ValueErrorr Ztag_addr �assertIn�str� exceptionrr � assertEqualZrawtext�getr)r �ve�pr r r� test_init@s  zHyperParserTest.test_initcCs�|j}|d�}|�|���|d�}|�|���|d�}|�|���|d�}|�|���|d�}|�|���|d�}|�|���|d�}|�|���dS)Nz1.0z1.4z2.3z3.3z3.7z4.6z12.54)r � assertFalseZ is_in_string� assertTrue)r r)r+r r r�test_is_in_stringTsz!HyperParserTest.test_is_in_stringcCs�|j}|d�}|�|���|d�}|�|���|d�}|�|���|d�}|�|���|d�}|�|���|d�}|�|���dS)Nz1.0z1.1z2.5z3.4z3.6z4.14)r r.Z is_in_coder-)r r)r+r r r�test_is_in_codefszHyperParserTest.test_is_in_codecCs�|j}dd�}dd�}|d�}|�||��|�||��|d�}|�||�d�|�||�||��|d�}|�||�d �|�||�||��|d �}|�||�d �|�||��|d �}|�||��|�||��dS) NcSs |jdd�S)NF)� mustclose)�get_surrounding_brackets)�parserr r r�without_mustcloseyszGHyperParserTest.test_get_surrounding_bracket..without_mustclosecSs |jdd�S)NT)r1)r2)r3r r r�with_mustclose~szDHyperParserTest.test_get_surrounding_bracket..with_mustclosez3.2z5.6)z5.4z5.25z5.23)z5.21z5.24z6.15)z6.4z6.endz9.end)r Z assertIsNoneZassertTupleEqual)r r)r4r5r+r r r�test_get_surrounding_bracketvs$z,HyperParserTest.test_get_surrounding_bracketc Cs�|j}|d�}|�|��d�|d�}|�t��}|��WdQRX|�dt|j��|d�}|�|��d�|d�}|�|��d�|d �}|�|��d �|d �}|�|��d�|d �}|�|��d �|d�}|�|��d�|d�}|�t��}|��WdQRX|�dt|j��|d�}|�|��d �|d�}|�|��d �|d�}|�|��d �|d�}|�|��d �|d�}|�|��d�|d�}|�|��d�dS)Nz4.2zy z4.7zis inside a codez5.25z range(10)z6.7�pyz6.8r!z7.9z8.endz x.__len__z9.13zr'asdf'z9.17z10.0z10.6z10.11z11.3z11.11�Falsez12.6ucliché)r r(Zget_expressionr#r$r%r&r')r r)r+r*r r r�test_get_expression�sF  z#HyperParserTest.test_get_expressioncCs�dd�}|�|d��|�|d��|�|d��|�|d��|�|d��|�|d��|�|d ��|�|d ��|�|d ��|�|d ��|�|d ��|�|d��|�|d��|�|d��|�|d��|�|d��|�|d��|�t�ddd�td��|�t�ddd�td��|�t�ddd�td��|�|d��|�|d��|�|d��|�|d��|�|d��|�|d ��|�|d!��|�|d"��dS)#NcSsJt�|dt|��}|t|�kr"dS|dkr.dSd�|t|��}t|��dS)NrTFz'Unexpected result: {} (expected 0 or {})r�_eat_identifier�len�format� Exception)� candidate�resultZerr_msgr r r� is_valid_id�s  z8HyperParserTest.test_eat_identifier..is_valid_idZ2notidZvalid_idZ _valid_idZ valid_id_Z _2valid_id�Truer8�None�for�import�returnZclicheuclichéua٢Z2au٢aua²z+ varr��varz+varr"z.var�+� �:�?�^�\�"z "a string")r-r.r(rr:r;)r r@r r r�test_eat_identifier�s: z#HyperParserTest.test_eat_identifiercCs*tj}�xtdd�D�] }|�|d|d|�|�|�|d|d|�|�|�|dd|dd|�|�|�|dd|dd|�|�|�|dd|dd|�|�|�|d|ddd|�|�|�|d|d|�d�|�|dd|dd|�d�|�|dd|dd|�d�qWdS)N���ar�é�2rH)rr:�ranger()r Zeat_id�lengthr r r�#test_eat_identifier_various_lengthss     z3HyperParserTest.test_eat_identifier_various_lengthsN)rrrr� classmethodrrrrr r,r/r0r6r9rOrWr r r rrs  !49r�__main__�)� verbosity)�__doc__Zidlelib.hyperparserrZunittestZ test.supportrZtkinterrrZidlelib.editorrrZTestCaserr�mainr r r r�s