o
    DDi                     @   s   d dl mZ 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 edZG d	d
 d
eZG dd deZdS )    )dedent)UnionN)RemovalSentinel)CSTNodeT)CSTTransformer)data_providernone_throwsUnitTest c                   @   sb   e Zd ZdeddfddZdeddfddZd	ejde	fd
dZ
dededeeef fddZdS )_TestVisitortestreturnNc                 C   s   d| _ || _d S )Nr   )counterr   )selfr    r   Z/var/www/Datamplify/venv/lib/python3.10/site-packages/libcst/_nodes/tests/test_cst_node.py__init__   s   
z_TestVisitor.__init__expectedc                 C   s"   | j | j| |  jd7  _d S )N   )r   assertEqualr   )r   r   r   r   r   assert_counter   s   z_TestVisitor.assert_counternodec                 C   sh   t |tjr| d dS t |tjr| d dS t |tjr'| d dS t |tjr2| d dS )Nr   r         T)
isinstancecstModuler   SimpleStatementLinePassNewline)r   r   r   r   r   on_visit   s   



z_TestVisitor.on_visitoriginal_nodeupdated_nodec                 C   s~   | j || |}t|tjr| d |S t|tjr%| d |S t|tjr2| d |S t|tj	r=| d |S )N            )
r   
assertTruedeep_equalsr   r   r   r   r   r   r   )r   r!   r"   return_noder   r   r   on_leave&   s   



z_TestVisitor.on_leave)__name__
__module____qualname__r	   r   intr   r   CSTNodeboolr    r   r   r   r*   r   r   r   r   r      s    
r   c                   @   sL  e Zd ZdddZdddZdddZeed	ed	fe	e	fej
ed	d
ej
ed	d
feje gdeje fdfddejdejddfddZeededfej
edd
ej
edd
fejeje dgdejeje dgd dfddejdejddfddZdddZdddZdS )CSTNodeTestr   Nc                 C   s   t jt dt dt dd}|jt dd}| t|jj	d | |j
j	d | |jj	d | t|jj	d d S )Nz  \
  z	# initialz

whitespacecommentnewlinez# new comment)r4   )r   TrailingWhitespaceSimpleWhitespaceCommentr   with_changesr   r   r4   valuer3   r5   )r   initialchangedr   r   r   test_with_changes8   s   zCSTNodeTest.test_with_changesc                 C   s\   t d}t d}| || | || | || | || | || d S Nr
   )r   r7   assertNotEqualr   r'   r(   r   sw1sw2r   r   r   test_default_eqI   s   

zCSTNodeTest.test_default_eqc                 C   sT   t d}t d}| t|t| | t|t| | t|t| d S r>   )r   r7   r?   hashr   r@   r   r   r   	test_hashR   s
   

zCSTNodeTest.test_hashr
   )r3   )body)simpleidentitynestedtuple_versus_listabc                 C      |  || d S N)r'   r(   r   rK   rL   r   r   r   test_deep_equals_successY   s   z$CSTNodeTest.test_deep_equals_success z     z       )	semicolonr   )rG   rI   listc                 C   rM   rN   )assertFalser(   rO   r   r   r   test_deep_equals_failsj   s   z"CSTNodeTest.test_deep_equals_failsc                 C   s~   |  ttjt gtjdtdd t dtjdtdd t dftjtdt	dt ddt
d  d S )	NTr
   )indentr3   r4   r5   rQ   z	# commentr2   )rF   leading_linestrailing_whitespacea  
                SimpleStatementLine(
                    body=[
                        Pass(
                            semicolon=MaybeSentinel.DEFAULT,
                        ),
                    ],
                    leading_lines=[
                        EmptyLine(
                            indent=True,
                            whitespace=SimpleWhitespace(
                                value='',
                            ),
                            comment=None,
                            newline=Newline(
                                value=None,
                            ),
                        ),
                        EmptyLine(
                            indent=True,
                            whitespace=SimpleWhitespace(
                                value='',
                            ),
                            comment=None,
                            newline=Newline(
                                value=None,
                            ),
                        ),
                    ],
                    trailing_whitespace=TrailingWhitespace(
                        whitespace=SimpleWhitespace(
                            value=' ',
                        ),
                        comment=Comment(
                            value='# comment',
                        ),
                        newline=Newline(
                            value=None,
                        ),
                    ),
                )
                )r   reprr   r   r   	EmptyLiner7   r   r6   r8   r   strip)r   r   r   r   	test_reprz   s:   +zCSTNodeTest.test_reprc                 C   s*   t t t  ff}|t|  d S rN   )r   r   r   r   visitr   )r   treer   r   r   
test_visit   s   zCSTNodeTest.test_visit)r   N)r+   r,   r-   r=   rC   rE   r   r   r7   _EMPTY_SIMPLE_WHITESPACErZ   r   r   r/   rP   	SemicolonrU   r\   r_   r   r   r   r   r1   7   s:    


	
Ir1   )textwrapr   typingr   libcstr   libcst._removal_sentinelr   libcst._typesr   libcst._visitorsr   libcst.testing.utilsr   r   r	   r7   r`   r   r1   r   r   r   r   <module>   s   
%