o
    DDiA                     @   s|   d dl mZ d dlmZmZ d dlZd dlmZ	 d dl
mZ d dlmZmZ d dlmZ G dd deZG dd	 d	eZdS )
    )dedent)OptionalSequenceN)
extractallfindall)UnitTestc                	   @   sl   e Zd Z	ddeej deej de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S )MatchersFindAllTestNseq1seq2msgreturnc                 C   sx   |d u rdnd| }t |t |krtd|d|| t||D ]\}}||s9td|d|| q$d S )N 
z
is not deeply equal to 
)lenAssertionErrorzipdeep_equals)selfr	   r
   r   suffixnode1node2 r   [/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/matchers/tests/test_findall.pyassertNodeSequenceEqual   s   
z+MatchersFindAllTest.assertNodeSequenceEqualc                 C   sX   t tjjtdtdB }| |g  t tjjtdtdB }| |g  d S )NTrueFalse)	r   cstRemovalSentinelREMOVEmNamer   MaybeSentinelDEFAULT)r   nothingr   r   r   test_findall_with_sentinels$   s   z/MatchersFindAllTest.test_findall_with_sentinelsc                 C   sL   d}t t|}t|tdtdB }| |t dt dg d S )Nu
            a = 1
            b = True

            def foo(bar: int) -> bool:
                return False
        r   r   )r   parse_moduler   r   r   r    r   )r   codemodulebooleansr   r   r   test_simple_findall+   s    z'MatchersFindAllTest.test_simple_findallc              	   C   s   d}t t|}t|}t|ttjtj	j
}| |t dt dt dt dg t|jttjtj	j
|d}| |t dt dt dt dg | jtdd t|jttjtj	j
}W d    d S 1 suw   Y  d S )	Nr%   abfoobar)metadata_resolverzLExpressionContextProvider is not resolved; did you forget a MetadataWrapper?)r   )r   r&   r   metaMetadataWrapperr   r   MatchMetadataExpressionContextProviderExpressionContextSTOREr   r    r(   assertRaisesLookupError)r   r'   r(   wrapperr)   r   r   r   "test_findall_with_metadata_wrapper9   sV   



"z6MatchersFindAllTest.test_findall_with_metadata_wrapperc              	   C   p   G dd dt j}d}tt|}t|}| }|| | |j	t
dt
dt
dt
dg d S )Nc                       J   e Zd ZU ejfZeej ed< d	 fddZ	de
jddfddZ  ZS )
zCMatchersFindAllTest.test_findall_with_visitors.<locals>.TestVisitorMETADATA_DEPENDENCIESr   Nc                       t    d| _d S Nr   super__init__resultsr   	__class__r   r   rA   }      

zLMatchersFindAllTest.test_findall_with_visitors.<locals>.TestVisitor.__init__nodec                 S       |  |ttjtjj| _d S Nr   r   r2   r0   r3   r4   r5   rB   r   rG   r   r   r   visit_Module      

zPMatchersFindAllTest.test_findall_with_visitors.<locals>.TestVisitor.visit_Moduler   N__name__
__module____qualname__r0   r3   r<   r   	ProviderT__annotations__rA   r   ModulerL   __classcell__r   r   rD   r   TestVisitorx   
   
 rW   r%   r+   r,   r-   r.   )r   MatcherDecoratableVisitorr   r&   r   r0   r1   visitr   rB   r    )r   rW   r'   r(   r8   visitorr   r   r   test_findall_with_visitorsv      

z.MatchersFindAllTest.test_findall_with_visitorsc              	   C   r:   )Nc                       r;   )
zKMatchersFindAllTest.test_findall_with_transformers.<locals>.TestTransformerr<   r   Nc                    r=   r>   r?   rC   rD   r   r   rA      rF   zTMatchersFindAllTest.test_findall_with_transformers.<locals>.TestTransformer.__init__rG   c                 S   rH   rI   rJ   rK   r   r   r   rL      rM   zXMatchersFindAllTest.test_findall_with_transformers.<locals>.TestTransformer.visit_ModulerN   rO   r   r   rD   r   TestTransformer   rX   r^   r%   r+   r,   r-   r.   )r   MatcherDecoratableTransformerr   r&   r   r0   r1   rZ   r   rB   r    )r   r^   r'   r(   r8   r[   r   r   r   test_findall_with_transformers   r]   z2MatchersFindAllTest.test_findall_with_transformersrI   rN   )rP   rQ   rR   r   r   CSTNoder   strr   r$   r*   r9   r\   r`   r   r   r   r   r      s     




=)r   c                   @   s   e Zd ZdddZdS )MatchersExtractAllTestr   Nc                 C   sr   t d}t|ttt  d}t t |t jj	d j
t jj}| |d|d j
id|d j
ig d S )Nza + b[c], d(e, f * g, h.i.j)expr      )r   parse_expressionr   r   ArgSaveMatchedNoder    ensure_typeTupleelementsvalueCallargsassertEqual)r   
expressionmatchesextracted_argsr   r   r   test_extractall_simple   s   
z-MatchersExtractAllTest.test_extractall_simplerN   )rP   rQ   rR   rt   r   r   r   r   rc      s    rc   )textwrapr   typingr   r   libcstr   libcst.matchersmatchersr   libcst.metadatametadatar0   r   r   libcst.testing.utilsr   r   rc   r   r   r   r   <module>   s    9