o
    DDib                      @   st   d dl mZmZ d dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZ d dlmZ G dd	 d	eZdS )
    )castTupleN)parse_moduleparse_statement)CSTNodeTest)	is_native)	CodeRangeMetadataWrapperPositionProvider)data_providerc                   @   s  e Zd Zeeee ffdfejee ffdddfejee ffeje	ddfeje	ddfdd	fejee ffd
ddfejdd
ddfejdeje	ddfddffdejde
ddfddZeede dfejddde dfejdd
de dffdejdejde
ddfddZedejg d
dddejg ddd
dd ejg eje	d!dgdddeee ggdd"ejeje gejed#e	d$d%d&geje	ddgeje	ddgddd'dd(d)e
dejd*eddfd+d,Zeded-d-dded-d.dd/ed-d.dded-d.dd"ed-d0dd1d)e
deddfd2d3Zd4ed5eeef d6eeef ddfd7d8ZdAd9d:ZdAd;d<ZdAd=d>ZdAd?d@ZdS )B
ModuleTestzpass
)default_newlinepassz# header)commentz# footer)headerfooterz# header
pass
# footer
F)has_trailing_newlinepass  z# nothing to see here)r   z# nothing to see here
moduleexpectedreturnNc                 C   s&   |  |j| |  |j|d d S )Nzutf-8)assertEqualcodebytesencode)selfr   r   r   r   X/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/_nodes/tests/test_module.pytest_code_and_bytes_properties   s   ,z)ModuleTest.test_code_and_bytes_properties
z
nodec                 C   s   |  ||| d S N)r   code_for_node)r   r   r"   r   r   r   r   test_code_for_node@   s   zModuleTest.test_code_for_node)r   r   T)r   r   enabled_for_nativez# some comment
z# some commentz"# header
pass # trailing
# footer
 z
# trailing)
whitespacer   )trailing_whitespace)empty_programempty_program_with_newlineempty_program_with_commentssimple_passsimple_pass_with_header_footer)r&   r   r&   c                C   s(   t  r
|s
| d | t|| d S )NzDisabled for native parser)r   skipTestr   r   )r   r   r   r&   r   r   r   test_parserN   s   
*
zModuleTest.test_parser   r   )   r   z# 2345   r   )emptyempty_with_newliner,   r-   r.   c                C   s,   t t|}|t}| ||j | d S r#   )r	   r   resolver
   r   r   )r   r   r   wrapper	positionsr   r   r   test_module_position|   s   
zModuleTest.test_module_positionactualstartendc                 C   s   |  |t|| d S r#   )r   r   )r   r<   r=   r>   r   r   r   cmp_position   s   zModuleTest.cmp_positionc                 C   s|   t td}|j}|t}ttj|jd }ttj	|jjd }ttj
|jd }| || dd | || dd d S )Nzdef foo():
    passr   r3   r5   )r3      )r	   r   r   r8   r
   r   cstFunctionDefbodySimpleStatementLinePassr?   )r   r9   r   r:   fnstmt	pass_stmtr   r   r   test_function_position   s   
z!ModuleTest.test_function_positionc           	      C   s   t td}|j}|t}ttj|jd }ttj|jjd }ttj	|jjd jd }ttj
|j}ttj	|jjd jd }| || dd | || dd | || dd | || dd | || d	d d S )
Nz5if True:
    if False:
        x = 1
else:
    returnr   r1   )   
   r@   )      )rM   rA   r4   )rK   r5   )r	   r   r   r8   r
   r   rB   IfrD   rE   Elseorelser?   )	r   r9   r   r:   outer_ifinner_ifassign
outer_elsereturn_stmtr   r   r   test_nested_indent_position   s   
z&ModuleTest.test_nested_indent_positionc                 C   s   t td}|j}|t}ttj|jd }ttj	|jd }|j
}| || dd | || dd | || dd d S )Nz"abc"\
"def"r   r1   )r3   rK   )r	   r   r   r8   r
   r   rB   rE   rD   Exprvaluer?   )r   r9   r   r:   rH   exprstringr   r   r   test_multiline_string_position   s   
z)ModuleTest.test_multiline_string_positionc                 C   sb   t d}td|jd}| |tjtjddtjtjt	 gdgtj
tjd dddd	 d S )
Nr   zif True:    pass)configTrue)rY   )rD   )newline)rD   r   )testrD   )r   r   config_for_parsingr   rB   rO   NameIndentedBlockrE   rF   TrailingWhitespaceNewline)r   r   	statementr   r   r   test_module_config_for_parsing   s$   
z)ModuleTest.test_module_config_for_parsing)r   N)__name__
__module____qualname__r   rB   ModulerE   rF   	EmptyLineCommentstrr    re   CSTNoder%   rd   SimpleWhitespaceboolr0   r   r;   r   intr?   rJ   rW   r\   rg   r   r   r   r   r      s    
+		(





r   )typingr   r   libcstrB   r   r   libcst._nodes.tests.baser   libcst._parser.entrypointsr   libcst.metadatar   r	   r
   libcst.testing.utilsr   r   r   r   r   r   <module>   s   