B „ fKã@s`dZddlmZddlZddlmZGdd„dejƒZGdd„dejƒZe d kr\ej d d �dS) zTest pyparse, coverage 96%.é)ÚpyparseN)Ú namedtuplec@seZdZdd„Zdd„ZdS)Ú ParseMapTestcCs`dd„dDƒ}t |¡}| |tdƒtdƒ¡| |tdƒtdƒ¡| |dtdƒ¡dS)NcSsi|]}t|ƒt|ƒ“qS©)Úord)Ú.0ÚcrrúC/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_pyparse.pyú sz.ParseMapTest.test_parsemap..z ú ÚaÚxiè)rZParseMapÚ assertEqualr)ÚselfZ keepwhiteÚmappingrrr Ú test_parsemap s  zParseMapTest.test_parsemapcCs$t dd¡}| d tj¡d¡dS)Néz a([{b}])b"c'd zxxx(((x)))x"x'x )rÚParserrÚ translateZtrans)rÚparserrrr Ú test_transs zParseMapTest.test_transN)Ú__name__Ú __module__Ú __qualname__rrrrrr rsrc@s”eZdZedd„ƒZedd„ƒZdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!S)"Ú PyParseTestcCstjddd�|_dS)Nr)Ú indentwidthÚtabwidth)rrr)Úclsrrr Ú setUpClassszPyParseTest.setUpClasscCs|`dS)N)r)rrrr Ú tearDownClassszPyParseTest.tearDownClasscCs$| |jjd¡| |jjd¡dS)Nr)rrrr)rrrr Ú test_init"szPyParseTest.test_initc Cs~|j}|j}|j}| t¡�|dƒWdQRXd}xD|D]<}|j|d��&||ƒ||j|ƒ||jdƒWdQRXq:WdS)Nr )Úza )Ústringr)rrÚset_codeÚ assertRaisesÚAssertionErrorÚsubTestÚcodeÚ study_level)rÚeqÚpÚsetcodeÚtestsr"rrr Ú test_set_code&s   zPyParseTest.test_set_codec CsB|j}|j}|j}|j}dd„}|dƒ|||ƒdƒ|dƒ|||ƒdƒ|dƒ| t¡� |ƒWdQRX| t¡�|dƒWdQRX| |dd „d �¡|||ƒd ƒ||d d „d �d ƒ||d d „d �dƒ||dd „d �dƒ|dƒ|||ƒd ƒ||dd „d �d ƒ||dd „d �dƒ||dd „d �d ƒdS)NcSsdS)NFr)Úindexrrr Úchar_in_string_false=ózDPyParseTest.test_find_good_parse_start..char_in_string_falsez def spam(): rzclass spam( zm"""This is a module docstring""" class C(): def __init__(self, a, b=True): pass FcSsdS)NTr)r.rrr ÚZr0z8PyParseTest.test_find_good_parse_start..)Zis_char_in_stringé,cSs|dkS)Nr2r)r.rrr r1br0cSs|dkS)Nr2r)r.rrr r1er0é!cSs|dkS)Nr2r)r.rrr r1hr0z\"""This is a module docstring""" class C(): def __init__(self, a, b=True): pass cSs|dkS)Nr2r)r.rrr r1rr0cSs|dkS)Nr2r)r.rrr r1sr0cSs|dkS)Nr2r)r.rrr r1vr0)rrr#Zfind_good_parse_startr$Ú TypeErrorÚ assertIsNone)rr)r*r+Ústartr/rrr Útest_find_good_parse_start8s0  z&PyParseTest.test_find_good_parse_startc Cspd}|j}| |¡| t¡�| d¡WdQRX| d¡| |j|¡| d¡| |j|dd…¡dS)Nzm"""This is a module docstring""" class C(): def __init__(self, a, b=True): pass érr2)rr#r$r%Zset_lorr')rr'r*rrr Ú test_set_loxs    zPyParseTest.test_set_loc CsÜ|j}|j}|j}|j}tdƒ\}}}}} tddddgƒ} | ddg|ƒ| ddd g|ƒ| d dd g|ƒ| d dd g|ƒ| d dd g|ƒ| d dd g|ƒ| ddd g|ƒ| dddg|ƒ| ddd g|ƒ| ddd g|ƒ| ddd dg|ƒ| ddd g|ƒ| ddd g| ƒ| ddd g|ƒ| ddd g|ƒ| ddd dg|ƒ| ddd dg| ƒ| ddd dg| ƒ| ddd g|ƒ| ddd g| ƒ| ddd g|ƒf} x`| D]X} |j| jd��>|| jƒ|ƒ||jd ƒ||j | j ƒ||j | j ƒWdQRX�qpW|  |ƒ¡dS) Nr8ÚTestInfor"Ú goodlinesÚ continuationr!rz$"""This is a complete docstring.""" éz$'''This is a complete docstring.''' z""""This is a continued docstring. z"'''This is a continued docstring. z""""Closing quote does not match." z"""Bracket in docstring [ z#'''Incomplete two line docstring. éz"This is a complete string." z"This is an incomplete string. z'This is more incomplete. z # Comment\ z"("""Complete string in bracket""" z("""Open string in bracket za = (1 + 2) - 5 *\ z0 def function1(self, a, b): éz def function1(self, a,\ z def function1(self, a, z()) z)( z{)(] )r") rrr#Z_study1Úrangerr&r"r(r;r<r5) rr)r*r+ÚstudyÚNONEÚ BACKSLASHÚFIRSTÚNEXTÚBRACKETr:r,Útestrrr Ú test_study1�sJ     zPyParseTest.test_study1c Cs¨|j}|j}|j}|j}tdƒ\}}}}} tdddgƒ} | d|ƒ| d|ƒ| d|ƒ| d|ƒ| d | ƒf} x>| D]6} |j| jd ��|| jƒ||ƒ| jƒWdQRXqjWdS) Nr8r:r"r<r!z%"""This is a continuation docstring. z-'''This is a multiline-continued docstring. za = (1 + 2) - 5 *\ z def function1(self, a,\ )r") rrr#Zget_continuation_typer@rr&r"r<) rr)r*r+ZgettyperBrCrDrErFr:r,rGrrr Útest_get_continuation_typeÁs   z&PyParseTest.test_get_continuation_typecCs¾|j}|j}|j}|j}tdddddddgƒ}|dd d ddd ƒ|d d d d ddƒ|dd ddddƒ|dd d ddd ƒ|dd ddddƒ|ddd dddƒ|ddddddƒ|d dd!dddƒ|d"dd#ddd$ƒ|d%d d&dd'd(ƒ|d)d d*d+dd,ƒ|d-d d.d/dd0ƒ|d1d d2d3dd4ƒ|d5d d*d6dd ƒ|d7d d ddd ƒf}xŠ|D]‚}|j|jd8��h||jƒ|ƒ||jd9ƒ||j|j ƒ||j |j ƒ||j |j ƒ||j |jƒ||j|jƒWdQRX�q(W| |ƒ¡dS):Nr:r"r6ÚendÚlastchÚ openbracketÚ bracketingr!r))rrz0'''This is a multiline continuation docstring. é0ú'))rr)rr=)rNrz # Comment\ é ))rr)r=r=)rPrz #Comment\ za = (1 + 2) - 5 *\ éÚ*))rr)rr=)é rz0 def function1(self, a, b): r=ú:))r=r)ér=)é.rz def function1(self, a,\ éú,rU))r=r)rUr=z def function1(self, a, éz3 def function1(self, a, # End of line comment. é3))r=r)rUr=)rWr>)rZr=z7 a = ["first item", # Comment line "next item", é7é))rr)r\r=)ér>)rQr=)ér>)é&r=)é*r>)é5r=z()) rú)))rr)rr=)r>r)r?rz)( r?ú())rr)r=r)r=r=z{)(] r8ú]))rr)rr=)r>r)r>r=)rrz:\a z\aÚ )r"r>)rrr#Z_study2rr&r"r(Z stmt_startr6Zstmt_endrJrKZlastopenbracketposrLZstmt_bracketingrMr5)rr)r*r+rAr:r,rGrrr Ú test_study2ÖsV                zPyParseTest.test_study2c CsÒ|j}|j}|j}|j}tdddgƒ}|ddƒ|ddƒ|ddƒ|d d ƒ|d dƒ|d dƒ|d dƒ|ddƒf}|dƒ| t¡� |ƒWdQRXx>|D]6}|j|jd��||jƒ||ƒ|j ƒWdQRXq”WdS)Nr:r"Úlinesz[x for x in a] r=z[x for x in a r>z[x\ for x in a\ z[x for x in a ] r?z% """Docstring comment L1""" L2 L3 L4 z% """Docstring comment L1 L2""" L3 L4 z& """Docstring comment L1\ L2\ L3\ L4\ rz+ """Docstring comment L1\ L2\ L3\ L4\ """ r8r!)r") rrr#Zget_num_lines_in_stmtrr$Ú IndexErrorr&r"rg)rr)r*r+Úgetlinesr:r,rGrrr Útest_get_num_lines_in_stmts(    z&PyParseTest.test_get_num_lines_in_stmtc CsÐ|j}|j}|j}|j}tdddgƒ}|ddƒ|ddƒ|ddƒ|d d ƒ|d d ƒ|d d ƒ|d dƒ|ddƒ|ddƒ|ddƒ|ddƒf }|dƒ| t¡� |ƒWdQRXx$|D]}||jƒ||ƒ|jƒq¬WdS)Nr:r"Úspaceszdef function1(self, a, éz def function1(self, a, éz def function1(self, a, z def function1( éz def function1( z def function1( z2[ "first item", # Comment line "next item", rz4[ "first item", # Comment line "next item", r>z1["first item", # Comment line "next item", r=z( rz(a zdef function1(self, a, b): ) rrr#Zcompute_bracket_indentrr$r%r"rk)rr)r*r+Úindentr:r,rGrrr Útest_compute_bracket_indent/s,    z'PyParseTest.test_compute_bracket_indentc Cs(|j}|j}|j}|j}d}xH|D]@}|j|d��*||ƒ| t¡� |ƒWdQRXWdQRXq"Wtddƒ}|ddƒ|ddƒ|dd ƒ|d d ƒ|d dƒ|d dƒ|ddƒ|ddƒ|ddƒ|dd ƒ|dd ƒ|ddƒ|ddƒ|ddƒf}x>|D]6} |j| jd��|| jƒ||ƒ| j ƒWdQRXqêWdS)N)zdef function1(self, a, b\ z """ (\ za = #\ )r"r:)r"rkza = (1 + 2) - 5 *\ rza = 1 + 2 - 5 *\ z a = 1 + 2 - 5 *\ rnz a = "spam"\ r\z a = \ "a"\ z a = #\ "a"\ r8za == \ r>za != \ z\ z \ z \ za\ r?z{}\ z(1 + 2) - 5 *\ ) rrr#Zcompute_backslash_indentr&r$r%rr"rk) rr)r*r+roÚerrorsr"r:r,rGrrr Útest_compute_backslash_indentOs:      z)PyParseTest.test_compute_backslash_indentc Cs¦|j}|j}|j}|j}tdddgƒ}|ddƒ|ddƒ|ddƒ|dd ƒ|d d ƒ|d d ƒ|d d ƒf}x>|D]6}|j|jd ��||jƒ||ƒ|jƒWdQRXqhWdS)Nr:r"ror!z def a(): z def a(): r z def a(): z z def a( z def a( z # Comment. )r")rrr#Zget_base_indent_stringrr&r"ro)rr)r*r+Z baseindentr:r,rGrrr Útest_get_base_indent_stringvs    z'PyParseTest.test_get_base_indent_stringc CsÒ|j}|j}|j}|j}|j}tdddgƒ}|d|ƒ|d|ƒ|d|ƒ|d|ƒ|d|ƒ|d |ƒ|d |ƒ|d |ƒ|d |ƒ|d |ƒ|d|ƒ|d|ƒf }x<|D]4}|j|jd��||jƒ| |ƒ¡WdQRXq–WdS)Nr:r"Úassert_z def a(): z0 def function1(self, a, b): z: za: z): z(: z": z def function1(self, a, z!def function1(self, a): pass z # A comment: z"""A docstring: )r") Ú assertTrueÚ assertFalserr#Zis_block_openerrr&r"rt) rÚyesÚnor*r+Úopenerr:r,rGrrr Útest_is_block_opener‹s,   z PyParseTest.test_is_block_openerc CsÚ|j}|j}|j}|j}|j}tdddgƒ}|d|ƒ|d|ƒ|d|ƒ|d|ƒ|d|ƒ|d |ƒ|d |ƒ|d |ƒ|d |ƒ|d |ƒ|d|ƒ|d|ƒ|d|ƒf }x<|D]4}|j|jd��||jƒ| |ƒ¡WdQRXqžWdS)Nr:r"rtzreturn z break z continue z raise z pass zpass z return # zraised z returning z # return z """break z "continue z!def function1(self, a): pass )r") rurvrr#Zis_block_closerrr&r"rt) rrwrxr*r+Zcloserr:r,rGrrr Útest_is_block_closer§s.   z PyParseTest.test_is_block_closerc Cs¾|j}|j}|j}|j}tdddgƒ}|ddƒ|ddƒ|ddƒ|d d ƒ|d d ƒ|d dƒ|ddƒ|ddƒ|ddƒ|ddƒf }x>|D]6}|j|jd��||jƒ||ƒ|jƒWdQRXq€WdS)Nr:r"Úbracketr!))rrza z()() ))rr)rr=)r>r)r>r=)rrz( )() ))rr)rr=)r?r)r?r=)r8rz() () ))r?r)r?r=)r8rz()( ) ))rr)rr=)r>r)r>r=)r8rz(()) ))rr)rr=)r=r>)r?r=)rrz( ()) ))rr)rr=)r>r>)rr=)r8rz{)(] z(((()) ))rr)rr=)r=r>)r>r?)r?r)r8r?)r\r>)r")rrr#Zget_last_stmt_bracketingrr&r"r|)rr)r*r+rMr:r,rGrrr Útest_get_last_stmt_bracketingÄs(  z)PyParseTest.test_get_last_stmt_bracketingN)rrrÚ classmethodrrr r-r7r9rHrIrfrjrprrrsrzr{r}rrrr rs   @2= 'rÚ__main__r>)Ú verbosity) Ú__doc__ZidlelibrZunittestÚ collectionsrZTestCaserrrÚmainrrrr Ús  K