o
    DDi                     @   sP   d dl Zd dlmZmZmZmZ d dlmZ G dd deZ	G dd deZ
dS )    N)byte_length_in_utf8ByteSpanPositionProviderCodeSpanSpanProvidingCodegenState)UnitTestc                   @   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S )SpanProvidingCodegenStateTestreturnNc                 C   s$   t ddtt d}| |jd d S )N    

get_lengthproviderr   )r   r   r   assertEqualpositionselfstate r   a/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/metadata/tests/test_span_provider.pytest_initial_position   s   z3SpanProvidingCodegenStateTest.test_initial_positionc                 C   .   t ddtt d}|d | |jd d S )Nr	   r
   r   12   r   r   r   	add_tokenr   r   r   r   r   r   test_add_token      
z,SpanProvidingCodegenStateTest.test_add_tokenc                 C   r   )Nr	   r
   r   u   🤡   r   r   r   r   r   test_add_non_ascii_token%   r   z6SpanProvidingCodegenStateTest.test_add_non_ascii_tokenc                 C   s8   t ddtt d}||j |  | |jd d S )Nr	   r
   r   r   )r   r   r   increase_indentdefault_indentadd_indent_tokensr   r   r   r   r   r   test_add_indent_tokens/   s   z4SpanProvidingCodegenStateTest.test_add_indent_tokensc                 C   s   t  }tddtt d}|| |d || |d W d    n1 s,w   Y  |d || |j	j
| }| |jd | |jd d S )Nr	   r
   r    pass   r   )cstPassr   r   r   before_codegenr   record_syntactic_positionafter_codegenr   	_computedr   startlength)r   noder   spanr   r   r   	test_span:   s"   



z'SpanProvidingCodegenStateTest.test_spanr   N)__name__
__module____qualname__r   r   r   r"   r0   r   r   r   r   r      s    

	



r   c                   @   s    e Zd ZdddZdddZdS )ByteSpanPositionProviderTestr   Nc                    s:   |  G  fdddt j}t t d}||  d S )Nc                       *   e Zd ZefZdejddf fddZdS )zGByteSpanPositionProviderTest.test_visitor_provider.<locals>.SomeVisitorr.   r   Nc                          | t|tddd d S Nr   r   )r,   r-   r   get_metadatar   r   r   r.   testr   r   
visit_PassU      

zRByteSpanPositionProviderTest.test_visitor_provider.<locals>.SomeVisitor.visit_Passr2   r3   r4   r   METADATA_DEPENDENCIESr&   r'   r>   r   r<   r   r   SomeVisitorR       rB   r$   )r&   
CSTVisitorMetadataWrapperparse_modulevisitr   rB   wrapperr   r<   r   test_visitor_providerO   s   	z2ByteSpanPositionProviderTest.test_visitor_providerc                    s<   |  G  fdddt j}t t d}|| g d S )Nc                       r6   )zIByteSpanPositionProviderTest.test_batchable_provider.<locals>.SomeVisitorr.   r   Nc                    r7   r8   r9   r;   r<   r   r   r>   d   r?   zTByteSpanPositionProviderTest.test_batchable_provider.<locals>.SomeVisitor.visit_Passr@   r   r<   r   r   rB   a   rC   rB   r$   )r&   BatchableCSTVisitorrE   rF   visit_batchedrH   r   r<   r   test_batchable_provider^   s   	z4ByteSpanPositionProviderTest.test_batchable_providerr1   )r2   r3   r4   rJ   rM   r   r   r   r   r5   N   s    
r5   )libcstr&   libcst.metadata.span_providerr   r   r   r   libcst.testing.utilsr   r   r5   r   r   r   r   <module>   s
   =