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 |jddS)NF)Ú mustclose)Úget_surrounding_brackets)Úparserr r rÚwithout_mustcloseyszGHyperParserTest.test_get_surrounding_bracket..without_mustclosecSs |jddS)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