
    ?d                     Z   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ej$                        Z G d dej$                        Z G d dej$                        Z G d dej$                        Zedk(  r ej0                          yy)zTests for yapf.pytree_utils.    N)pygram)pytree)token)pytree_utilsfoofoo1foo2foo3foo4foo5c                       e Zd Zd Zd Zy)NodeNameTestc                     t        j                  t        j                  d      }| j	                  dt        j                  |             y )N(LPAR)r   Leafr   r   assertEqualr   NodeName)selfleafs     =/usr/lib/python3/dist-packages/yapftests/pytree_utils_test.pytestNodeNameForLeafz NodeNameTest.testNodeNameForLeaf&   s1    ;;uzz3'DV\22489    c                     t        j                  t        j                  d      }t        j                  t
        j                  j                  d   |g      }| j                  dt        j                  |             y )Nr   suite)r   r   r   r   Noder   python_grammarsymbol2numberr   r   r   )r   r   nodes      r   testNodeNameForNodez NodeNameTest.testNodeNameForNode*   sT    ;;uzz3'D;;v,,::7CdVLDWl33D9:r   N)__name__
__module____qualname__r   r     r   r   r   r   $   s    :;r   r   c                   $    e Zd Zd Zd Zd Zd Zy)ParseCodeToTreeTestc                 &   t        j                  d      }| j                  dt        j                  |             | j                  dt	        |j
                               | j                  dt        j                  |j
                  d                y )Nzfoo = 2

file_input   simple_stmtr   r   ParseCodeToTreer   r   lenchildrenr   trees     r   testParseCodeToTreez'ParseCodeToTreeTest.testParseCodeToTree2   sl     ''4D\<#8#8#>?QDMM*+]L$9$9$--:J$KLr   c                 &   t        j                  d      }| j                  dt        j                  |             | j                  dt	        |j
                               | j                  dt        j                  |j
                  d                y )Nz&print("hello world", file=sys.stderr)
r(   r)   r*   r   r+   r/   s     r   testPrintFunctionToTreez+ParseCodeToTreeTest.testPrintFunctionToTree:   sm    ''13D\<#8#8#>?QDMM*+]L$9$9$--:J$KLr   c                 &   t        j                  d      }| j                  dt        j                  |             | j                  dt	        |j
                               | j                  dt        j                  |j
                  d                y )Nzprint "hello world"
r(   r)   r*   r   r+   r/   s     r   testPrintStatementToTreez,ParseCodeToTreeTest.testPrintStatementToTreeA   sk    ''(?@D\<#8#8#>?QDMM*+]L$9$9$--:J$KLr   c                 &   t        j                  d      }| j                  dt        j                  |             | j                  dt	        |j
                               | j                  dt        j                  |j
                  d                y )Nzclass nonlocal: pass
r(   r)   classdefr   r+   r/   s     r   testClassNotLocalz%ParseCodeToTreeTest.testClassNotLocalG   sk    ''(@AD\<#8#8#>?QDMM*+Z!6!6t}}Q7G!HIr   N)r!   r"   r#   r1   r3   r5   r8   r$   r   r   r&   r&   0   s    MMMJr   r&   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
InsertNodesBeforeAfterTestc                 R   t        j                  t        j                  d      }t        j                  t        j                  d      }t        j                  t
        d   t        j                  t        j                  d      g      }t        j                  t
        d   |||g      S )Nr   r*   r   r   )r   r   r   r   r   _GRAMMAR_SYMBOL2NUMBERNAME)r   lpar1lpar2r*   s       r   _BuildSimpleTreez+InsertNodesBeforeAfterTest._BuildSimpleTreeP   s{     KK

C(EKK

C(E++4]C%{{5::u=>@K;;-g6uk24 4r   c                 J    t        j                  t        j                  d      S )N))r   r   r   RPARr   s    r   _MakeNewNodeRPARz+InsertNodesBeforeAfterTest._MakeNewNodeRPARa   s    ;;uzz3''r   c                 .    | j                         | _        y N)r@   _simple_treerD   s    r   setUpz InsertNodesBeforeAfterTest.setUpd   s    --/Dr   c                    t        j                  | j                         g| j                  j                  d          | j                  dt        | j                  j                               | j                  dt        j                  | j                  j                  d                | j                  dt        j                  | j                  j                  d                y )Nr)      rC   r*      )r   InsertNodesBeforerE   rH   r.   r   r-   r   rD   s    r   testInsertNodesBeforez0InsertNodesBeforeAfterTest.testInsertNodesBeforeg   s    ""D$9$9$;#<#'#4#4#=#=a#@BQD--6678V!**4+<+<+E+Ea+HIK]!**4+<+<+E+Ea+HIKr   c                    | j                   j                  d   }|j                  d   }t        j                  | j	                         g|       | j                  dt        | j                   j                               | j                  dt        |j                               | j                  dt        j                  |j                  d                | j                  dt        j                  |j                  d                y )Nr)   r   rL   rC   r=      )rH   r.   r   rM   rE   r   r-   r   r   r*   	foo_childs      r   testInsertNodesBeforeFirstChildz:InsertNodesBeforeAfterTest.testInsertNodesBeforeFirstChildq   s    ##,,Q/K$$Q'I""D$9$9$;#<iHQD--6678QK0012V\22;3G3G3JKLV\22;3G3G3JKLr   c                    t        j                  | j                         g| j                  j                  d          | j                  dt        | j                  j                               | j                  dt        j                  | j                  j                  d                | j                  dt        j                  | j                  j                  d                y )Nr)   rK   r*   rC   rL   )r   InsertNodesAfterrE   rH   r.   r   r-   r   rD   s    r   testInsertNodesAfterz/InsertNodesBeforeAfterTest.testInsertNodesAfter{   s    !!4#8#8#:";"&"3"3"<"<Q"?AQD--6678]!**4+<+<+E+Ea+HIKV!**4+<+<+E+Ea+HIKr   c                    | j                   j                  d   }|j                  d   }t        j                  | j	                         g|       | j                  dt        | j                   j                               | j                  dt        |j                               | j                  dt        j                  |j                  d                | j                  dt        j                  |j                  d                y )Nr)   r   rL   r=   rC   rP   )rH   r.   r   rU   rE   r   r-   r   rQ   s      r   testInsertNodesAfterLastChildz8InsertNodesBeforeAfterTest.testInsertNodesAfterLastChild   s    ##,,Q/K$$Q'I!!4#8#8#:";YGQD--6678QK0012V\22;3G3G3JKLV\22;3G3G3JKLr   c                     | j                  t              5  t        j                  | j                  j
                  d   g| j                  j
                  d          d d d        y # 1 sw Y   y xY w)NrP   r   )assertRaisesRuntimeErrorr   rU   rH   r.   rD   s    r   testInsertNodesWhichHasParentz8InsertNodesBeforeAfterTest.testInsertNodesWhichHasParent   sb    			<	( C##T%6%6%?%?%B$C$($5$5$>$>q$ACC C Cs   AA%%A.N)r!   r"   r#   r@   rE   rI   rN   rS   rV   rX   r\   r$   r   r   r:   r:   N   s/    4"(0KMKMCr   r:   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	AnnotationsTestc                     t        j                  t        j                  d      | _        t        j
                  t        d   t        j                  t        j                  d      g      | _        y )Nr   r*   r   )	r   r   r   r   _leafr   r<   r=   _noderD   s    r   rI   zAnnotationsTest.setUp   sE    UZZ-DJ3MB$kk%**e<=?DJr   c                 j    | j                  t        j                  | j                  t                     y rG   )assertIsNoner   GetNodeAnnotationr`   _FOOrD   s    r   testGetWhenNonezAnnotationsTest.testGetWhenNone   s!    l44TZZFGr   c                     t        j                  | j                  t        d       | j	                  t        j
                  | j                  t              d       y N   r   SetNodeAnnotationr`   re   r   rd   rD   s    r   testSetWhenNonezAnnotationsTest.testSetWhenNone   9    ""4::tR8\33DJJErJr   c                 h   t        j                  | j                  t        d       | j	                  t        j
                  | j                  t              d       t        j                  | j                  t        d       | j	                  t        j
                  | j                  t              d       y )Nri      rj   rD   s    r   testSetAgainzAnnotationsTest.testSetAgain   sp    ""4::tR8\33DJJErJ""4::tR8\33DJJErJr   c                 0   t        j                  | j                  t        d       t        j                  | j                  t        d       t        j                  | j                  t
        d       t        j                  | j                  t        d       t        j                  | j                  t        d       t        j                  | j                  t        d       | j                  t        j                  | j                  t              d       | j                  t        j                  | j                  t              d       | j                  t        j                  | j                  t
              d       | j                  t        j                  | j                  t              d       | j                  t        j                  | j                  t              d       | j                  t        j                  | j                  t              d       y )Nri   rP   r)   rL   rK      )r   rk   r`   re   _FOO1_FOO2_FOO3_FOO4_FOO5r   rd   rD   s    r   testMultiplezAnnotationsTest.testMultiple   sL   ""4::tR8""4::ua8""4::ua8""4::ua8""4::ua8""4::ua8\33DJJErJ\33DJJFJ\33DJJFJ\33DJJFJ\33DJJFJ\33DJJFJr   c                     t        j                  | j                  t         j                  j                  t
               | j                  t        j                  | j                  t         j                  j                        t
        h       t        j                  | j                  t
               | j                  t        j                  | j                  t         j                  j                        t                      y rG   )
r   AppendNodeAnnotationr`   
AnnotationSUBTYPEre   assertSetEqualrd   RemoveSubtypeAnnotationsetrD   s    r   testSubtypezAnnotationsTest.testSubtype   s    %%djj&2&=&=&E&EtM 	&&tzz'3'>'>'F'F	HJNQ ((T:&&tzz'3'>'>'F'F	HILPr   c                     t        j                  | j                  t        d       | j	                  t        j
                  | j                  t              d       y rh   )r   rk   ra   re   r   rd   rD   s    r   testSetOnNodezAnnotationsTest.testSetOnNode   rm   r   N)
r!   r"   r#   rI   rf   rl   rp   rx   r   r   r$   r   r   r^   r^      s+    ?
HKKKPKr   r^   __main__)__doc__unittestlib2to3r   r   lib2to3.pgen2r   yapf.pytreer   r   r   r<   re   rs   rt   ru   rv   rw   TestCaser   r&   r:   r^   r!   mainr$   r   r   <module>r      s    #     $  ..<< 	;8$$ 	;J(++ J<EC!2!2 ECP3Kh'' 3Kl z(--/ r   