HEX
Server: Apache
System: Linux p3plzcpnl506847.prod.phx3.secureserver.net 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: slfopp7cb1df (5698090)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/python38/lib/python3.8/idlelib/idle_test/__pycache__/test_pyparse.cpython-38.pyc
U

�i�_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/python38/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	CsB|j}|j}|j}|j}dd�}|d�|||�d�|d�|||�d�|d�|�t��|�W5QRX|�t��|d�W5QRX|�|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.<locals>.char_in_string_falsezdef spam():
rzclass spam(  
�m"""This is a module docstring"""
class C():
    def __init__(self, a,
                 b=True):
        pass
FcSsdS)NTrr1rrr	�<lambda>Zr4z8PyParseTest.test_find_good_parse_start.<locals>.<lambda>)Zis_char_in_string�,cSs|dkS�Nr7rr1rrr	r6br4cSs|dkSr8rr1rrr	r6er4�!cSs|dkSr8rr1rrr	r6hr4z\"""This is a module docstring"""
class C():
    def __init__(self, a, b=True):
        pass
cSs|dkSr8rr1rrr	r6rr4cSs|dkSr8rr1rrr	r6sr4cSs|dkSr8rr1rrr	r6vr4)rrr&Zfind_good_parse_startr'�	TypeError�assertIsNone)rr,r-r.�startr3rrr	�test_find_good_parse_start8s0z&PyParseTest.test_find_good_parse_startc	Cspd}|j}|�|�|�t��|�d�W5QRX|�d�|�|j|�|�d�|�|j|dd��dS)Nr5�rr7)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|�|
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+rArBr;)
rr,r-r.�study�NONE�	BACKSLASH�FIRST�NEXT�BRACKETr@r/�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>r@r%rBr"z%"""This is a continuation docstring.
z-'''This is a multiline-continued docstring.

rErHr$)	rrr&Zget_continuation_typerMrr)r%rB)
rr,r-r.ZgettyperOrPrQrRrSr@r/rTrrr	�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):Nr@r%r<�end�lastch�openbracket�
bracketingr"r��rrz0'''This is a multiline continuation docstring.

�0�')r\�rrC)r]rz # Comment\
�)r\�rCrC)r`rz #Comment\
rE��*)r\�rrC)�rrFrC�:)�rCr��rC)�.rrH��,ri)rgrhrI�z3
   def function1(self, a,  # End of line comment.
�3)rgrh)rkrD)rnrCz7  a = ["first item",
  # Comment line
    "next item",
�7�)r\)rprC)�rD)rbrC)�rD)�&rC)�*rD)�5rCrJr�))r\r_�rDr�rGrrKrG�()r\rgrarLr>�]�r\r_rw�rDrC�rrz:\a
z\a�
r$rD)rrr&Z_study2rr)r%r+Z
stmt_startr<Zstmt_endrWrXZlastopenbracketposrYZstmt_bracketingrZr;)rr,r-r.rNr@r/rTrrr	�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)Nr@r%�linesz[x for x in a]
rCz[x
for x in a
rDz[x\
for x in a\
z[x
for x in a
]
rGz%
"""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.�getlinesr@r/rTrrr	�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)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",
rDz1["first item",
  # Comment line
    "next item",
rCz(
rz(a
zdef function1(self, a, b):
)	rrr&Zcompute_bracket_indentrr'r(r%r�)rr,r-r.�indentr@r/rTrrr	�test_compute_bracket_indent/s.�
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$r@)r%r�rErza = 1 + 2 - 5 *\
z    a = 1 + 2 - 5 *\
r�z  a = "spam"\
rpz
  a = \
"a"\
z  a = #\
"a"\
r>za == \
rDza != \
z\
z    \
z	\
za\
rGz{}\
z(1 + 2) - 5 *\
)
rrr&Zcompute_backslash_indentr)r'r(rr%r�)
rr,r-r.r��errorsr%r@r/rTrrr	�test_compute_backslash_indentOs<
�
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)Nr@r%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
baseindentr@r/rTrrr	�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}|D]4}|j|jd��||j�|�|��W5QRXq�dS)Nr@r%�assert_r�rFz:
za:
z):
z(:
z":
rI�!def function1(self, a):
    pass
z
# A comment:
z"""A docstring:
r$)	�
assertTrue�assertFalserr&Zis_block_openerrr)r%r�)	r�yes�nor-r.�openerr@r/rTrrr	�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)Nr@r%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.Zcloserr@r/rTrrr	�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)Nr@r%�bracketr"r[r#z()()
r{z(
)()
)r\r_rx�rGrC�r>rz()
()
)rxr�r�z()(
)
)r\r_rwr|r�z(())
)r\r_�rCrDr�r}z(
())
)r\r_)rDrDrdr�rLz(((())
)r\r_r�)rDrG)rGr)r>rG)rprDr$)rrr&Zget_last_stmt_bracketingrr)r%r�)rr,r-r.rZr@r/rTrrr	�test_get_last_stmt_bracketing�s,��
z)PyParseTest.test_get_last_stmt_bracketingN)rrr�classmethodrr r!r0r=r?rUrVrr�r�r�r�r�r�r�rrrr	rs$

@2= 'r�__main__rD)�	verbosity)�__doc__ZidlelibrZunittest�collectionsrZTestCaserrr�mainrrrr	�<module>sK