o
    ?n0jÝ  ã                   @   s¼   d 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 ej	j
ZdZdZd	Zd
ZdZdZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZedkr\e ¡  dS dS )zTests for yapf.pytree_utils.é    N)Úpygram)Úpytree)Útoken)Úpytree_utilsÚfooZfoo1Zfoo2Zfoo3Zfoo4Zfoo5c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚNodeNameTestc                 C   s$   t  tjd¡}|  dt |¡¡ d S )Nú(ÚLPAR)r   ÚLeafr   r	   ÚassertEqualr   ÚNodeName)ÚselfÚleaf© r   úb/home/wildlama/miniconda3/envs/lam_a2e/lib/python3.10/site-packages/yapftests/pytree_utils_test.pyÚtestNodeNameForLeaf&   s   z NodeNameTest.testNodeNameForLeafc                 C   s:   t  tjd¡}t  tjjd |g¡}|  dt	 
|¡¡ d S )Nr   Úsuite)r   r
   r   r	   ÚNoder   Úpython_grammarÚsymbol2numberr   r   r   )r   r   Únoder   r   r   ÚtestNodeNameForNode*   s   z NodeNameTest.testNodeNameForNodeN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   $   s    r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚParseCodeToTreeTestc                 C   óJ   t  d¡}|  dt  |¡¡ |  dt|jƒ¡ |  dt  |jd ¡¡ d S )Nzfoo = 2
Ú
file_inputé   Úsimple_stmtr   ©r   ÚParseCodeToTreer   r   ÚlenÚchildren©r   Útreer   r   r   ÚtestParseCodeToTree2   s   
z'ParseCodeToTreeTest.testParseCodeToTreec                 C   r   )Nz&print("hello world", file=sys.stderr)
r   r   r   r   r    r$   r   r   r   ÚtestPrintFunctionToTree:   s   ÿz+ParseCodeToTreeTest.testPrintFunctionToTreec                 C   ó:   |   t¡ t d¡ W d   ƒ d S 1 sw   Y  d S )Nzprint "hello world"
©ÚassertRaisesÚSyntaxErrorr   r!   ©r   r   r   r   ÚtestPrintStatementToTreeA   ó   "ÿz,ParseCodeToTreeTest.testPrintStatementToTreec                 C   r(   )Nzclass nonlocal: pass
r)   r,   r   r   r   ÚtestClassNotLocalE   r.   z%ParseCodeToTreeTest.testClassNotLocalN)r   r   r   r&   r'   r-   r/   r   r   r   r   r   0   s
    r   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚInsertNodesBeforeAfterTestc                 C   sN   t  tjd¡}t  tjd¡}t  td t  tjd¡g¡}t  td |||g¡S )Nr   r   r   r   )r   r
   r   r	   r   Ú_GRAMMAR_SYMBOL2NUMBERÚNAME)r   Zlpar1Zlpar2r   r   r   r   Ú_BuildSimpleTreeL   s   

ÿ
ÿz+InsertNodesBeforeAfterTest._BuildSimpleTreec                 C   s   t  tjd¡S )Nú))r   r
   r   ÚRPARr,   r   r   r   Ú_MakeNewNodeRPAR]   ó   z+InsertNodesBeforeAfterTest._MakeNewNodeRPARc                 C   s   |   ¡ | _d S ©N)r3   Ú_simple_treer,   r   r   r   ÚsetUp`   r7   z InsertNodesBeforeAfterTest.setUpc                 C   óf   t  |  ¡ g| jjd ¡ |  dt| jjƒ¡ |  dt  | jjd ¡¡ |  dt  | jjd ¡¡ d S )Nr   é   r5   r   é   )r   ÚInsertNodesBeforer6   r9   r#   r   r"   r   r,   r   r   r   ÚtestInsertNodesBeforec   ó   
ÿÿÿz0InsertNodesBeforeAfterTest.testInsertNodesBeforec                 C   ó‚   | j jd }|jd }t |  ¡ g|¡ |  dt| j jƒ¡ |  dt|jƒ¡ |  dt |jd ¡¡ |  dt |jd ¡¡ d S )Nr   r   r=   r5   r2   é   )r9   r#   r   r>   r6   r   r"   r   ©r   r   Z	foo_childr   r   r   ÚtestInsertNodesBeforeFirstChildm   ó   
z:InsertNodesBeforeAfterTest.testInsertNodesBeforeFirstChildc                 C   r;   )Nr   r<   r   r5   r=   )r   ÚInsertNodesAfterr6   r9   r#   r   r"   r   r,   r   r   r   ÚtestInsertNodesAfterw   r@   z/InsertNodesBeforeAfterTest.testInsertNodesAfterc                 C   rA   )Nr   r   r=   r2   r5   rB   )r9   r#   r   rF   r6   r   r"   r   rC   r   r   r   ÚtestInsertNodesAfterLastChild   rE   z8InsertNodesBeforeAfterTest.testInsertNodesAfterLastChildc                 C   sN   |   t¡ t | jjd g| jjd ¡ W d   ƒ d S 1 s w   Y  d S )NrB   r   )r*   ÚRuntimeErrorr   rF   r9   r#   r,   r   r   r   ÚtestInsertNodesWhichHasParent‹   s
   
ÿ"ÿz8InsertNodesBeforeAfterTest.testInsertNodesWhichHasParentN)r   r   r   r3   r6   r:   r?   rD   rG   rH   rJ   r   r   r   r   r0   J   s    



r0   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚAnnotationsTestc                 C   s2   t  tjd¡| _t  td t  tjd¡g¡| _d S )Nr   r   r   )	r   r
   r   r	   Ú_leafr   r1   r2   Ú_noder,   r   r   r   r:   ”   s   

ÿzAnnotationsTest.setUpc                 C   s   |   t | jt¡¡ d S r8   )ZassertIsNoner   ÚGetNodeAnnotationrL   Ú_FOOr,   r   r   r   ÚtestGetWhenNone™   s   zAnnotationsTest.testGetWhenNonec                 C   ó*   t  | jtd¡ |  t  | jt¡d¡ d S ©Né   ©r   ÚSetNodeAnnotationrL   rO   r   rN   r,   r   r   r   ÚtestSetWhenNoneœ   ó   zAnnotationsTest.testSetWhenNonec                 C   sP   t  | jtd¡ |  t  | jt¡d¡ t  | jtd¡ |  t  | jt¡d¡ d S )NrS   é   rT   r,   r   r   r   ÚtestSetAgain    s   zAnnotationsTest.testSetAgainc                 C   sè   t  | jtd¡ t  | jtd¡ t  | jtd¡ t  | jtd¡ t  | jtd¡ t  | jtd¡ |  	t  
| jt¡d¡ |  	t  
| jt¡d¡ |  	t  
| jt¡d¡ |  	t  
| jt¡d¡ |  	t  
| jt¡d¡ |  	t  
| jt¡d¡ d S )NrS   rB   r   r=   r<   é   )r   rU   rL   rO   Ú_FOO1Ú_FOO2Ú_FOO3Ú_FOO4Ú_FOO5r   rN   r,   r   r   r   ÚtestMultiple¦   s   zAnnotationsTest.testMultiplec                 C   s^   t  | jt jjt¡ |  t  | jt jj¡th¡ t  | jt¡ |  t  | jt jj¡t	ƒ ¡ d S r8   )
r   ZAppendNodeAnnotationrL   Z
AnnotationZSUBTYPErO   ZassertSetEqualrN   ZRemoveSubtypeAnnotationÚsetr,   r   r   r   ÚtestSubtypeµ   s    ÿÿþÿþzAnnotationsTest.testSubtypec                 C   rQ   rR   )r   rU   rM   rO   r   rN   r,   r   r   r   ÚtestSetOnNodeÃ   rW   zAnnotationsTest.testSetOnNodeN)
r   r   r   r:   rP   rV   rY   r`   rb   rc   r   r   r   r   rK   ’   s    rK   Ú__main__)Ú__doc__ZunittestZyapf_third_party._ylib2to3r   r   Z yapf_third_party._ylib2to3.pgen2r   Zyapf.pytreer   r   r   r1   rO   r[   r\   r]   r^   r_   ZTestCaser   r   r0   rK   r   Úmainr   r   r   r   Ú<module>   s(   H6ÿ