HEX
Server: LiteSpeed
System: Linux server.nevid-deploma.com 4.18.0-553.111.1.lve.el8.x86_64 #1 SMP Fri Mar 13 13:42:17 UTC 2026 x86_64
User: smilepac (1037)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cppython/lib/python3.8/idlelib/idle_test/__pycache__/test_pyparse.cpython-38.opt-1.pyc
U

0D�g�K�@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�=/opt/cppython/lib/python3.8/idlelib/idle_test/test_pyparse.py�
<dictcomp>sz.ParseMapTest.test_parsemap.<locals>.<dictcomp>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
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!S)"�PyParseTestcCstjddd�|_dS)Nr)�indentwidth�tabwidth)rrr��clsrrr	�
setUpClassszPyParseTest.setUpClasscCs|`dS�N)rrrrr	�
tearDownClassszPyParseTest.tearDownClasscCs$|�|jjd�|�|jjd�dS)Nr)rrrr)rrrr	�	test_init"szPyParseTest.test_initc
Csz|j}|j}|j}|�t��|d�W5QRXd}|D]<}|j|d��&||�||j|�||jd�W5QRXq8dS)Nr)��a
��stringr)rr�set_code�assertRaises�AssertionError�subTest�code�study_level)r�eq�p�setcode�testsr&rrr	�
test_set_code&szPyParseTest.test_set_codec	sb|j}|j}|j}|j}dd�}|d�|||�d�|d�|||�d�|d�d\}�|�t��|�W5QRX|�t��|d�W5QRX|�|d	d
�d��|||���||�fdd
�d���||�fd
d
�d�|�||�fdd
�d�d�|d�|||���||�fdd
�d���||�fdd
�d�|�||�fdd
�d���dS)NcSsdS)NFr��indexrrr	�char_in_string_false=�zDPyParseTest.test_find_good_parse_start.<locals>.char_in_string_falsezdef spam():
rzclass spam(  
�k"""This is a module docstring"""
class C:
    def __init__(self, a,
                 b=True):
        pass
)�!�*FcSsdS)NTrr2rrr	�<lambda>[r5z8PyParseTest.test_find_good_parse_start.<locals>.<lambda>)Zis_char_in_stringcs|�kSr rr2��posrr	r9cr5cs|�kSr rr2r:rr	r9fr5cs|�kSr rr2r:rr	r9ir5zZ"""This is a module docstring"""
class C:
    def __init__(self, a, b=True):
        pass
cs|�kSr rr2r:rr	r9sr5cs|�kSr rr2r:rr	r9tr5cs|�kSr rr2r:rr	r9wr5)rrr'Zfind_good_parse_startr(�	TypeError�assertIsNone)rr-r.r/�startr4Zpos0rr:r	�test_find_good_parse_start8s2z&PyParseTest.test_find_good_parse_startc	Cstd}d}|j}|�|�|�t��|�d�W5QRX|�d�|�|j|�|�|�|�|j||d��dS)Nr6r8�r)rr'r(r)Zset_lorr+)rr+r;r.rrr	�test_set_loys�


zPyParseTest.test_set_loc
Cs�|j}|j}|j}|j}td�\}}}}}	tddddg�}
|
ddg|�|
ddd	g|�|
d
dd	g|�|
ddd	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}|D]X}|j|jd��>||j�|�||jd	�||j	|j	�||j
|j
�W5QRX�qn|�|��dS) Nr@�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
�a = (1 + 2) - 5 *\
�0
   def function1(self, a,
                 b):
��
   def function1(self, a,\
�
   def function1(self, a,
�())
�)(
�{)(]
r%)rrr'Z_study1�rangerr*r&r,rCrDr=)
rr-r.r/�study�NONE�	BACKSLASH�FIRST�NEXT�BRACKETrBr0�testrrr	�test_study1�sR���
zPyParseTest.test_study1c

Cs�|j}|j}|j}|j}td�\}}}}}	tdddg�}
|
d|�|
d|�|
d|�|
d|�|
d	|	�f}|D]6}|j|jd
��||j�||�|j�W5QRXqhdS)Nr@rBr&rDr#z%"""This is a continuation docstring.
z-'''This is a multiline-continued docstring.

rGrJr%)	rrr'Zget_continuation_typerOrr*r&rD)
rr-r.r/ZgettyperQrRrSrTrUrBr0rVrrr	�test_get_continuation_type�s �
z&PyParseTest.test_get_continuation_typecCs�|j}|j}|j}|j}tdddddddg�}|dd	d	ddd
�|dd	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}|D]�}|j|jd8��h||j�|�||jd9�||j|j	�||j
|j�||j|j�||j
|j�||j|j�W5QRX�q&|�|��dS):NrBr&r>�end�lastch�openbracket�
bracketingr#r��rrz0'''This is a multiline continuation docstring.

�0�')r^�rrE)r_rz # Comment\
�)r^�rErE)rbrz #Comment\
rG��*)r^�rrE)�rrHrE�:)�rEr��rE)�.rrJ��,rk)rirjrK�z3
   def function1(self, a,  # End of line comment.
�3)rirj)rmrF)rprEz7  a = ["first item",
  # Comment line
    "next item",
�7�)r^)rrrE)�rF)rdrE)�rF)�&rE)r8rF)�5rErLr�))r^ra�rFr�rIrrMrI�()r^rircrNr@�]�r^rarx�rFrE�rrz:\a
z\a�
r%rF)rrr'Z_study2rr*r&r,Z
stmt_startr>Zstmt_endrYrZZlastopenbracketposr[Zstmt_bracketingr\r=)rr-r.r/rPrBr0rVrrr	�test_study2�s��������������'
zPyParseTest.test_study2c
Cs�|j}|j}|j}|j}tdddg�}|dd�|dd�|dd�|d	d
�|dd�|dd�|d
d�|dd�f}|d�|�t��|�W5QRX|D]6}|j|jd��||j�||�|j	�W5QRXq�dS)NrBr&�linesz[x for x in a]
rEz[x
for x in a
rFz[x\
for x in a\
z[x
for x in a
]
rIz%
"""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\
"""
r@r#r%)
rrr'Zget_num_lines_in_stmtrr(�
IndexErrorr*r&r�)rr-r.r/�getlinesrBr0rVrrr	�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
�|dd
�|dd
�|d
d�|dd�|dd�|dd�|dd�f}|d�|�t��|�W5QRX|D]}||j�||�|j�q�dS)NrBr&�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",
rFz1["first item",
  # Comment line
    "next item",
rEz(
rz(a
zdef function1(self, a, b):
)	rrr'Zcompute_bracket_indentrr(r)r&r�)rr-r.r/�indentrBr0rVrrr	�test_compute_bracket_indent1s.�
z'PyParseTest.test_compute_bracket_indentc
Cs |j}|j}|j}|j}d}|D]@}|j|d��*||�|�t��|�W5QRXW5QRXq tdd�}|dd�|dd�|dd	�|d
d�|dd�|d
d�|dd�|dd�|dd�|dd�|dd�|dd�|dd�|dd�f}|D]6}	|j|	jd��||	j�||�|	j	�W5QRXq�dS)N)zdef function1(self, a, b\
z    """ (\
za = #\
r%rB)r&r�rGrza = 1 + 2 - 5 *\
z    a = 1 + 2 - 5 *\
r�z  a = "spam"\
rrz
  a = \
"a"\
z  a = #\
"a"\
r@za == \
rFza != \
z\
z    \
z	\
za\
rIz{}\
z(1 + 2) - 5 *\
)
rrr'Zcompute_backslash_indentr*r(r)rr&r�)
rr-r.r/r��errorsr&rBr0rVrrr	�test_compute_backslash_indentQs<
�
z)PyParseTest.test_compute_backslash_indentc
Cs�|j}|j}|j}|j}tdddg�}|dd�|dd�|dd�|dd	�|d
d	�|dd	�|dd	�f}|D]6}|j|jd
��||j�||�|j�W5QRXqfdS)NrBr&r�r#�	def a():
z
	def a():
rz
    def a():
z    z    def a(
z
	
    def a(
z	
    # Comment.
r%)rrr'Zget_base_indent_stringrr*r&r�)rr-r.r/Z
baseindentrBr0rVrrr	�test_get_base_indent_stringxs"�	
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}|D]4}|j|jd��||j�|�|��W5QRXq�dS)NrBr&�assert_r�rHz:
za:
z):
z(:
z":
rK�!def function1(self, a):
    pass
z
# A comment:
z"""A docstring:
r%)	�
assertTrue�assertFalserr'Zis_block_openerrr*r&r�)	r�yes�nor.r/�openerrBr0rVrrr	�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
}|D]4}|j|jd��||j�|�|��W5QRXq�dS)NrBr&r�zreturn
z	break
z  continue
z     raise
z	pass    
zpass	
z	return #
zraised
z
returning
z	# return
z	"""break
z
"continue
r�r%)	r�r�rr'Zis_block_closerrr*r&r�)	rr�r�r.r/ZcloserrBr0rVrrr	�test_is_block_closer�s0�
z PyParseTest.test_is_block_closercCs�|j}|j}|j}|j}tdddg�}|dd�|dd�|dd�|d	d
�|dd�|d
d�|dd�|dd�|dd�|dd�f
}|D]6}|j|jd��||j�||�|j�W5QRXq~dS)NrBr&�bracketr#r]r$z()()
r|z(
)()
)r^rary�rIrE�r@rz()
()
)ryr�r�z()(
)
)r^rarxr}r�z(())
)r^ra�rErFr�r~z(
())
)r^ra)rFrFrfr�rNz(((())
)r^rar�)rFrI)rIr)r@rI)rrrFr%)rrr'Zget_last_stmt_bracketingrr*r&r�)rr-r.r/r\rBr0rVrrr	�test_get_last_stmt_bracketing�s,��
z)PyParseTest.test_get_last_stmt_bracketingN)rrr�classmethodrr!r"r1r?rArWrXr�r�r�r�r�r�r�r�rrrr	rs$

A2= 'r�__main__rF)�	verbosity)�__doc__ZidlelibrZunittest�collectionsrZTestCaserrr�mainrrrr	�<module>sM