o
    DDi#                     @   s   d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZmZ d dlmZmZ d dlmZ d	ed
eeef fddZG dd deZG dd deZdS )    )TupleN)parse_module)BatchableCSTVisitor)
CSTVisitor)	CodeRangeMetadataWrapperPositionProvider#WhitespaceInclusivePositionProvider)PositionProvidingCodegenState0WhitespaceInclusivePositionProvidingCodegenState)UnitTeststatereturnc                 C   s   | j | jfS N)linecolumn)r    r   e/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/metadata/tests/test_position_provider.pyposition   s   r   c                   @   s*   e Zd Zd	ddZd	ddZd	ddZdS )
PositionProviderTestr   Nc                    s4   |  G  fdddt }ttd}||  dS )z}
        Sets 2 metadata entries for every node:
            SimpleProvider -> 1
            DependentProvider - > 2
        c                       *   e Zd ZefZdejddf fddZdS )zDPositionProviderTest.test_visitor_provider.<locals>.DependentVisitornoder   Nc                         | t|tdd d S N   r   r      assertEqualget_metadatar   r   selfr   testr   r   
visit_Pass,      zOPositionProviderTest.test_visitor_provider.<locals>.DependentVisitor.visit_Pass__name__
__module____qualname__r   METADATA_DEPENDENCIEScstPassr%   r   r#   r   r   DependentVisitor)       r.   passN)r   r   r   visit)r"   r.   wrapperr   r#   r   test_visitor_provider!   s   z*PositionProviderTest.test_visitor_providerc                    sP   | t dd G  fdddt}ttd|  ttd|  d S )Nr   r      c                       sF   e Zd ZefZdejddf fddZdejddf fddZ	dS )zCPositionProviderTest.test_equal_range.<locals>.EqualPositionVisitorr   r   Nc                        | t|  d S r   r   r    r   r!   expected_ranger$   r   r   visit_Equal;      zOPositionProviderTest.test_equal_range.<locals>.EqualPositionVisitor.visit_Equalc                    r6   r   r7   r!   r8   r   r   visit_NotEqual@   r;   zRPositionProviderTest.test_equal_range.<locals>.EqualPositionVisitor.visit_NotEqual)
r(   r)   r*   r   r+   r,   Equalr:   NotEqualr<   r   r8   r   r   EqualPositionVisitor8   s    r?   zvar == 1zvar != 1)r   r   r   r   r1   )r"   r?   r   r8   r   test_equal_range4   s
   
z%PositionProviderTest.test_equal_rangec                    s6   |  G  fdddt }ttd}|| g d S )Nc                       r   )z@PositionProviderTest.test_batchable_provider.<locals>.ABatchabler   r   Nc                    r   r   r   r!   r#   r   r   r%   N   r&   zKPositionProviderTest.test_batchable_provider.<locals>.ABatchable.visit_Passr'   r   r#   r   r   
ABatchableK   r/   rA   r0   )r   r   r   visit_batched)r"   rA   r2   r   r#   r   test_batchable_providerH   s   z,PositionProviderTest.test_batchable_providerr   N)r(   r)   r*   r3   r@   rC   r   r   r   r   r       s    

r   c                   @   s\   e Z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ddZ
dS )!PositionProvidingCodegenStateTestr   Nc                 C   s"   t ddt }| t|d d S )N    
r   )r   r	   r   r   r"   r   r   r   r   test_codegen_initial_positionX   s   z?PositionProvidingCodegenStateTest.test_codegen_initial_positionc                 C   ,   t ddt }|d | t|d d S )NrF   rG   1234r   r   r	   	add_tokenr   r   rH   r   r   r   test_codegen_add_token^   
   
z8PositionProvidingCodegenStateTest.test_codegen_add_tokenc                 C   rJ   )NrF   rG   z	1234
1234)   r   rL   rH   r   r   r   test_codegen_add_tokense   rO   z9PositionProvidingCodegenStateTest.test_codegen_add_tokensc                 C   s,   t ddt }|d | t|d d S )NrF   rG   )rP   r   rL   rH   r   r   r   test_codegen_add_newlinel   rO   z:PositionProvidingCodegenStateTest.test_codegen_add_newlinec                 C   s6   t ddt }||j |  | t|d d S )NrF   rG   r   )r   r	   increase_indentdefault_indentadd_indent_tokensr   r   rH   r   r   r   test_codegen_add_indent_tokenss   s   z@PositionProvidingCodegenStateTest.test_codegen_add_indent_tokensc                 C   sV   t ddt }||j ||j ||j |  |  | t|d d S )NrF   rG   )r      )r   r	   rS   rT   decrease_indentrU   r   r   rH   r   r   r   test_codegen_decrease_indent{   s   z>PositionProvidingCodegenStateTest.test_codegen_decrease_indentc                 C      t  }tddt }|| |d || |d W d    n1 s*w   Y  |d || | |j	j
| tdd d S )NrF   rG    r0   r   r4   )r,   r-   r   r	   before_codegenrM   record_syntactic_positionafter_codegenr   provider	_computedr   r"   r   r   r   r   r   "test_whitespace_inclusive_position   s   



zDPositionProvidingCodegenStateTest.test_whitespace_inclusive_positionc                 C   rZ   )NrF   rG   r[   r0   )r   r   )r      )r,   r-   r
   r   r\   rM   r]   r^   r   r_   r`   r   ra   r   r   r   test_position   s   



z/PositionProvidingCodegenStateTest.test_positionrD   )r(   r)   r*   rI   rN   rQ   rR   rV   rY   rb   rd   r   r   r   r   rE   W   s    






rE   )typingr   libcstr,   r   libcst._batched_visitorr   libcst._visitorsr   libcst.metadatar   r   r   r	   !libcst.metadata.position_providerr
   r   libcst.testing.utilsr   intr   r   rE   r   r   r   r   <module>   s   

7