o
    DD©i  ã                   @   sl   d dl mZ d dl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 d dlmZ G dd	„ d	eƒZdS )
é    )ÚcastN)Úparse_module)Ú	LazyValue)ÚBatchableMetadataProviderÚMetadataWrapperÚVisitorMetadataProvider)Ú_gen_batchable)ÚUnitTestc                   @   s4   e Zd Zddd„Zddd„Zddd„Zdd	d
„ZdS )ÚBaseMetadataProviderTestÚreturnNc                 C   sÖ   G dd„ dt t ƒ}ttdƒƒ}|j}ttj|jd ƒjd }ttj|jd ƒjd }|ƒ }| 	|¡}|  
| ||¡d¡ |  
| ||¡d¡ |  
| ||¡d¡ |  
|| d¡ |  
|| d¡ |  
|| d¡ d S )Nc                   @   ó$   e Zd ZdZdejdefdd„ZdS )zFBaseMetadataProviderTest.test_visitor_provider.<locals>.SimpleProviderz;
            Sets metadata on every node to 1.
            Únoder   c                 S   s   |   |d¡ dS )Né   T©Úset_metadata©Úselfr   © r   úa/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/metadata/tests/test_base_provider.pyÚon_visit   s   zOBaseMetadataProviderTest.test_visitor_provider.<locals>.SimpleProvider.on_visitN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚcstÚCSTNodeÚboolr   r   r   r   r   ÚSimpleProvider   ó    r   úpass; returnr   r   )r   Úintr   r   Úmoduler   r   ÚSimpleStatementLineÚbodyÚ_genÚassertEqualÚget_metadata)r   r   Úwrapperr"   Úpass_Úreturn_ÚproviderÚmetadatar   r   r   Útest_visitor_provider   s   	
z.BaseMetadataProviderTest.test_visitor_providerc           	      C   sü   G dd„ dt t ƒ}ttdƒƒ}|j}ttj|jd ƒjd }ttj|jd ƒjd }ttj|jd ƒjd }|ƒ }t	||gƒ}|  
| ||¡d¡ |  
| ||¡d¡ |  
| ||¡d¡ |  
|| | d¡ |  
|| | d¡ |  
|| | d¡ d S )Nc                   @   ó8   e Zd ZdZdejddfdd„Zdejddfdd„ZdS )	zHBaseMetadataProviderTest.test_batchable_provider.<locals>.SimpleProviderz[
            Sets metadata on every pass node to 1 and every return node to 2.
            r   r   Nc                 S   ó   |   |d¡ d S ©Nr   r   r   r   r   r   Ú
visit_Pass7   ó   zSBaseMetadataProviderTest.test_batchable_provider.<locals>.SimpleProvider.visit_Passc                 S   r/   ©Né   r   r   r   r   r   Úvisit_Return:   r2   zUBaseMetadataProviderTest.test_batchable_provider.<locals>.SimpleProvider.visit_Return©	r   r   r   r   r   ÚPassr1   ÚReturnr5   r   r   r   r   r   2   s    r   úpass; return; passr   r   r4   )r   r!   r   r   r"   r   r   r#   r$   r   r&   r'   )	r   r   r(   r"   r)   r*   Úpass_2r+   r,   r   r   r   Útest_batchable_provider1   s   z0BaseMetadataProviderTest.test_batchable_providerc                 C   sâ   G dd„ dt t ƒ}ttdƒƒ}|j}ttj|jd ƒjd }ttj|jd ƒjd }|ƒ }| 	|¡}|  
| ||¡d¡ |  
| ||¡d¡ |  
| ||¡d¡ |  t|| tƒ¡ |  t|| tƒ¡ |  t|| tƒ¡ d S )Nc                   @   r   )zOBaseMetadataProviderTest.test_lazy_visitor_provider.<locals>.SimpleLazyProviderzS
            Sets metadata on every node to a callable that returns 1.
            r   r   c                 S   s   |   |tdd„ ƒ¡ dS )Nc                   S   ó   dS r0   r   r   r   r   r   Ú<lambda>W   ó    zjBaseMetadataProviderTest.test_lazy_visitor_provider.<locals>.SimpleLazyProvider.on_visit.<locals>.<lambda>T©r   r   r   r   r   r   r   V   s   zXBaseMetadataProviderTest.test_lazy_visitor_provider.<locals>.SimpleLazyProvider.on_visitNr   r   r   r   r   ÚSimpleLazyProviderQ   r   r@   r    r   r   )r   r!   r   r   r"   r   r   r#   r$   r%   r&   r'   Ú
assertTrueÚ
isinstancer   )r   r@   r(   r"   r)   r*   r+   r,   r   r   r   Útest_lazy_visitor_providerP   s   	
z3BaseMetadataProviderTest.test_lazy_visitor_providerc           	      C   s  G dd„ dt t ƒ}ttdƒƒ}|j}ttj|jd ƒjd }ttj|jd ƒjd }ttj|jd ƒjd }|ƒ }t	||gƒ}|  
| ||¡d¡ |  
| ||¡d¡ |  
| ||¡d¡ |  t|| | tƒ¡ |  t|| | tƒ¡ |  t|| | tƒ¡ d S )Nc                   @   r.   )	zPBaseMetadataProviderTest.testlazy_batchable_provider.<locals>.SimpleLazyProviderz˜
            Sets metadata on every pass node to a callable that returns 1,
            and every return node to a callable that returns 2.
            r   r   Nc                 S   ó   |   |tdd„ ƒ¡ d S )Nc                   S   r<   r0   r   r   r   r   r   r=   t   r>   zmBaseMetadataProviderTest.testlazy_batchable_provider.<locals>.SimpleLazyProvider.visit_Pass.<locals>.<lambda>r?   r   r   r   r   r1   s   ó   z[BaseMetadataProviderTest.testlazy_batchable_provider.<locals>.SimpleLazyProvider.visit_Passc                 S   rD   )Nc                   S   r<   r3   r   r   r   r   r   r=   w   r>   zoBaseMetadataProviderTest.testlazy_batchable_provider.<locals>.SimpleLazyProvider.visit_Return.<locals>.<lambda>r?   r   r   r   r   r5   v   rE   z]BaseMetadataProviderTest.testlazy_batchable_provider.<locals>.SimpleLazyProvider.visit_Returnr6   r   r   r   r   r@   m   s    r@   r9   r   r   r4   )r   r!   r   r   r"   r   r   r#   r$   r   r&   r'   rA   rB   r   )	r   r@   r(   r"   r)   r*   r:   r+   r,   r   r   r   Útestlazy_batchable_providerl   s   z4BaseMetadataProviderTest.testlazy_batchable_provider)r   N)r   r   r   r-   r;   rC   rF   r   r   r   r   r
      s
    


r
   )Útypingr   Úlibcstr   r   Úlibcst._metadata_dependentr   Úlibcst.metadatar   r   r   Úlibcst.metadata.wrapperr   Úlibcst.testing.utilsr	   r
   r   r   r   r   Ú<module>   s   