
    `N`                         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                     dS dS )zTests for yapf.pytree_visitor.    N)	py3compat)pytree_utils)pytree_visitorc                   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 | _        d S N)all_node_namesname_node_values)selfs    =lib/python3.11/site-packages/yapftests/pytree_visitor_test.py__init__z_NodeNameCollector.__init__!   s    DD    c                     | j                             t          j        |                     t	          t
          |                               |           d S r	   )r
   appendr   NodeNamesuperr   DefaultNodeVisit)r   node	__class__s     r   r   z#_NodeNameCollector.DefaultNodeVisit%   sJ    |4T::;;;	
d##44T:::::r   c                 ^    | j                             t          j        |                     d S r	   )r
   r   r   r   r   leafs     r   DefaultLeafVisitz#_NodeNameCollector.DefaultLeafVisit)   s*    |4T::;;;;;r   c                 n    | j                             |j                   |                     |           d S r	   )r   r   valuer   r   s     r   
Visit_NAMEz_NodeNameCollector.Visit_NAME,   s5      ,,,$r   )	__name__
__module____qualname____doc__r   r   r   r   __classcell__)r   s   @r   r   r      so           ; ; ; ; ;< < <             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dS )PytreeVisitorTestc                     t          j        t                    }t                      }|                    |           g d}|                     ||j                   g d}|                     ||j                   d S )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?   s    '(ABBD"$$IOOD  N 	^Y%=>>> : : :.	0JKKKKKr   c                     t          j        t                    }t                      }|                    |           g d}|                     ||j                   g d}|                     ||j                   d S )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   s    '(ABBD"$$IOOD  N 	^Y%=>>> E E E.	0JKKKKKr   c                 Z   t          j        t                    }t          j                    }t          j        |                              |           |                                }| 	                    d|           | 	                    d|           | 	                    d|           d S 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_   s     '(ABBD!!Ff555;;DAAA//##KMM+[999MM+[999MM+[99999r   c                 6   t          j        t                    }t          j                    }t          j        ||           |                                }|                     d|           |                     d|           |                     d|           d S rI   )	r   r1   r2   r   rK   r   
DumpPyTreerM   rN   rO   s       r   testDumpPyTreez PytreeVisitorTest.testDumpPyTreek   s    '(ABBD!!Fd&9999//##KMM+[999MM+[999MM+[99999r   N)r   r   r    r:   rG   rR   rU    r   r   r$   r$   =   sV        L L LL L L"
: 
: 
:	: 	: 	: 	: 	:r   r$   __main__)r!   unittestyapf.yapflibr   r   r   PyTreeVisitorr   r2   rF   TestCaser$   r   mainrV   r   r   <module>r]      s    % $  " " " " " " % % % % % % ' ' ' ' ' '         5      4 
 7: 7: 7: 7: 7:) 7: 7: 7:t z(-///// r   