
    ?d                         d Z ddlZddlmZ ddlmZ ddlmZ  G d dej                        ZdZ	d	Z
 G d
 dej                        Zedk(  r ej                          yy)zTests for yapf.pytree_visitor.    N)pytree_utils)pytree_visitor)	py3compatc                   4     e Zd ZdZd Z fdZd Zd Z xZS )_NodeNameCollectora!  A tree visitor that collects the names of all tree nodes into a list.

  Attributes:
    all_node_names: collected list of the names, available when the traversal
      is over.
    name_node_values: collects a list of NAME leaves (in addition to those going
      into all_node_names).
  c                      g | _         g | _        y N)all_node_namesname_node_values)selfs    ?/usr/lib/python3/dist-packages/yapftests/pytree_visitor_test.py__init__z_NodeNameCollector.__init__!   s    DD    c                     | j                   j                  t        j                  |             t        t
        |   |       y r	   )r
   appendr   NodeNamesuperr   DefaultNodeVisit)r   node	__class__s     r   r   z#_NodeNameCollector.DefaultNodeVisit%   s2    |44T:;	
d4T:r   c                 `    | j                   j                  t        j                  |             y r	   )r
   r   r   r   r   leafs     r   DefaultLeafVisitz#_NodeNameCollector.DefaultLeafVisit)   s!    |44T:;r   c                 p    | j                   j                  |j                         | j                  |       y r	   )r   r   valuer   r   s     r   
Visit_NAMEz_NodeNameCollector.Visit_NAME,   s(      ,$r   )	__name__
__module____qualname____doc__r   r   r   r   __classcell__)r   s   @r   r   r      s    ;< r   r   z
foo = bar
baz = x
z
if x:
  if y:
    return z
c                   $    e Zd Zd Zd Zd Zd Zy)PytreeVisitorTestc                     t        j                  t              }t               }|j	                  |       g d}| j                  ||j                         g d}| j                  ||j                         y )N)
file_inputsimple_stmt	expr_stmtNAMEEQUALr)   NEWLINEr'   r(   r)   r*   r)   r+   	ENDMARKER)foobarbazx)r   ParseCodeToTree_VISITOR_TEST_SIMPLE_CODEr   VisitassertEqualr
   r   r   tree	collectorexpected_namesexpected_name_node_valuess        r   !testCollectAllNodeNamesSimpleCodez3PytreeVisitorTest.testCollectAllNodeNamesSimpleCode?   sc    ''(ABD"$IOODN 	^Y%=%=> :.	0J0JKr   c                     t        j                  t              }t               }|j	                  |       g d}| j                  ||j                         g d}| j                  ||j                         y )N)r&   if_stmtr)   r)   COLONsuiter+   INDENTr<   r)   r)   r=   r>   r+   r?   r'   return_stmtr)   r)   r+   DEDENTrA   r,   )ifr0   rB   yreturnz)r   r1   _VISITOR_TEST_NESTED_CODEr   r3   r4   r
   r   r5   s        r   !testCollectAllNodeNamesNestedCodez3PytreeVisitorTest.testCollectAllNodeNamesNestedCodeN   sc    ''(ABD"$IOODN 	^Y%=%=> E.	0J0JKr   c                 4   t        j                  t              }t        j                         }t        j                  |      j                  |       |j                         }| j                  d|       | j                  d|       | j                  d|       y N)target_streamzfile_input [3 children]zNAME(Leaf(NAME, 'foo'))zEQUAL(Leaf(EQUAL, '=')))
r   r1   r2   r   StringIOr   PyTreeDumperr3   getvalueassertInr   r6   streamdump_outputs       r   
testDumperzPytreeVisitorTest.testDumper_   su     ''(ABD!Ff5;;DA//#KMM+[9MM+[9MM+[9r   c                    t        j                  t              }t        j                         }t        j                  ||       |j                         }| j                  d|       | j                  d|       | j                  d|       y rI   )	r   r1   r2   r   rK   r   
DumpPyTreerM   rN   rO   s       r   testDumpPyTreez PytreeVisitorTest.testDumpPyTreek   sj    ''(ABD!Fd&9//#KMM+[9MM+[9MM+[9r   N)r   r   r    r:   rG   rR   rU    r   r   r$   r$   =   s    LL"
:	:r   r$   __main__)r!   unittestyapf.pytreer   r   yapf.yapflibr   PyTreeVisitorr   r2   rF   TestCaser$   r   mainrV   r   r   <module>r^      se    %  $ & " 55  4 
 7:)) 7:t z(--/ r   