o
    DDi+                     @   s   d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
mZmZ d dlmZmZmZmZ G dd deZG dd deZG dd	 d	eZG d
d deZdS )    )TestCase)

AnnotationCSTNodeFunctionDefIndentedBlockModuleParamparse_modulePass	SemicolonSimpleStatementLine)get_node_fieldsis_default_node_fieldis_syntax_node_fieldis_whitespace_node_fieldc                   @   sj   e Zd ZU dZeed< eed< eed< eed< e	ed< e
ed< eed< eed	< edddZdddZdS )_NodeFieldsTestzNode fields related tests.module
annotationparam_pass	semicolon	statementindentfunctionreturnNc                 C   sl   t d| _| jjd | _| jjjd | _| jj| _| jj| _| jjd | _| jjd | _	| jjd j
| _
dS )z4Parse a simple CST and references interesting nodes.z4def foo(a: str) -> None:
    pass ; pass
    return
r   N)r	   r   bodyr   paramsr   r   r   r   r   r   )cls r   ^/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/helpers/tests/test_node_fields.py
setUpClass)   s   

z_NodeFieldsTest.setUpClassc                 C   st   |  | jt |  | jt |  | jt |  | jt |  | j	t
 |  | jt |  | jt |  | jt dS )z&Test that the CST is correctly parsed.N)assertIsInstancer   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   )selfr   r   r   test__cst_correctnessA   s   z%_NodeFieldsTest.test__cst_correctnessr   N)__name__
__module____qualname____doc__r   __annotations__r   r   r
   r   r   r   r   classmethodr    r#   r   r   r   r   r      s   
 r   c                   @   st   e Zd ZdZdeeef deddfddZddd	Z	dd
dZ
dddZdddZdddZdddZdddZdS )IsWhitespaceNodeFieldTestz#``is_whitespace_node_field`` tests.is_filtered_fieldnoder   Nc                 C   l   t |}| t|t| |D ]#}| ||j t||d|jj d|j d||j r-dnd d qd S )NNode ``
`` field '' should haveshould not havez. been filtered by ``is_whitespace_node_field``)r   assertEquallennamer   	__class__r'   r"   r,   r-   fieldsfieldr   r   r   _check_fieldsP      z'IsWhitespaceNodeFieldTest._check_fieldsc                 C   s&   dddddddd}|  || j dS z1Check if a CST Module node is correctly filtered.FT)r   headerfooterencodingdefault_indentdefault_newlinehas_trailing_newlineNr;   r   r"   r,   r   r   r   test_module\      	z%IsWhitespaceNodeFieldTest.test_modulec                 C      dddd}|  || j dS z5Check if a CST Annotation node is correctly filtered.FT)r   whitespace_before_indicatorwhitespace_after_indicatorNr;   r   rE   r   r   r   test_annotationi   
   z)IsWhitespaceNodeFieldTest.test_annotationc              	   C   s(   ddddddddd}|  || j dS z0Check if a CST Param node is correctly filtered.FT)r6   r   equaldefaultcommastarwhitespace_after_starwhitespace_after_paramNr;   r   rE   r   r   r   
test_paramr      
z$IsWhitespaceNodeFieldTest.test_paramc                 C   s   ddd}|  || j dS )z4Check if a CST Semicolon node is correctly filtered.T)whitespace_beforewhitespace_afterN)r;   r   rE   r   r   r   test_semicolon   s   z(IsWhitespaceNodeFieldTest.test_semicolonc                 C   rH   z>Check if a CST SimpleStatementLine node is correctly filtered.FT)r   leading_linestrailing_whitespaceNr;   r   rE   r   r   r   test_statement   rN   z(IsWhitespaceNodeFieldTest.test_statementc                 C       ddddd}|  || j dS z8Check if a CST IndentedBlock node is correctly filtered.FT)r   r>   r   r?   Nr;   r   rE   r   r   r   test_indent      z%IsWhitespaceNodeFieldTest.test_indentc                 C   s4   ddddddddddddddd}|  || j dS z6Check if a CST FunctionDef node is correctly filtered.FT)r6   r   r   
decoratorsreturnsasynchronousr]   lines_after_decoratorswhitespace_after_defwhitespace_after_namewhitespace_before_paramswhitespace_before_colontype_parameters whitespace_after_type_parametersNr;   r   rE   r   r   r   test_function       z'IsWhitespaceNodeFieldTest.test_functionr$   )r%   r&   r'   r(   dictstrboolr   r;   rF   rM   rW   r[   r`   rd   rr   r   r   r   r   r+   M   s    


	


	
r+   c                   @   sL   e Zd ZdZdeeef deddfddZddd	Z	dd
dZ
dddZdS )IsSyntaxNodeFieldTestz``is_syntax_node_field`` tests.r,   r-   r   Nc                 C   r.   )Nr/   r0   r1   r2   r3   z* been filtered by ``is_syntax_node_field``)r   r4   r5   r6   r   r7   r'   r8   r   r   r   r;      r<   z#IsSyntaxNodeFieldTest._check_fieldsc                 C   s&   dddddddd}|  || j dS r=   rD   rE   r   r   r   rF      rG   z!IsSyntaxNodeFieldTest.test_modulec              	   C   s(   ddddddddd}|  || j dS rO   rV   rE   r   r   r   rW      rX   z IsSyntaxNodeFieldTest.test_paramc                 C   s   ddi}|  || j dS )z/Check if a CST Pass node is correctly filtered.r   TN)r;   r   rE   r   r   r   	test_pass   s   zIsSyntaxNodeFieldTest.test_passr$   )r%   r&   r'   r(   rt   ru   rv   r   r;   rF   rW   rx   r   r   r   r   rw      s    

rw   c                   @   sj   e Zd ZdZdeeef deddfddZddd	Z	dd
dZ
dddZdddZdddZdddZdS )IsDefaultNodeFieldTestz ``is_default_node_field`` tests.r,   r-   r   Nc                 C   r.   )Nr/   r0   r1   r2   r3   z+ been filtered by ``is_default_node_field``)r   r4   r5   r6   r   r7   r'   r8   r   r   r   r;      r<   z$IsDefaultNodeFieldTest._check_fieldsc                 C   s&   dddddddd}|  || j dS r=   rD   rE   r   r   r   rF      rG   z"IsDefaultNodeFieldTest.test_modulec                 C   s   dddd}|  || j dS rI   rL   rE   r   r   r   rM      rN   z&IsDefaultNodeFieldTest.test_annotationc              	   C   s(   ddddddddd}|  || j dS rO   rV   rE   r   r   r   rW     rX   z!IsDefaultNodeFieldTest.test_paramc                 C   rH   r\   r_   rE   r   r   r   r`     rN   z%IsDefaultNodeFieldTest.test_statementc                 C   ra   rb   rc   rE   r   r   r   rd     re   z"IsDefaultNodeFieldTest.test_indentc                 C   s4   ddddddddddddddd}|  || j dS rf   rq   rE   r   r   r   rr   (  rs   z$IsDefaultNodeFieldTest.test_functionr$   )r%   r&   r'   r(   rt   ru   rv   r   r;   rF   rM   rW   r`   rd   rr   r   r   r   r   ry      s    


	

	
ry   N)unittestr   libcstr   r   r   r   r   r   r	   r
   r   r   libcst.helpersr   r   r   r   r   r+   rw   ry   r   r   r   r   <module>   s   00c2