a
    
d                     @   sp   d Z ddlZddlmZ ddlmZ ddlmZ G dd dejZdZ	d	Z
G d
d dejZedkrle  dS )zTests for yapf.pytree_visitor.    N)StringIO)pytree_utils)pytree_visitorc                       s8   e Zd ZdZdd Z fddZdd Zdd	 Z  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                 C   s   g | _ g | _d S N)all_node_namesname_node_values)self r
   f/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/yapftests/pytree_visitor_test.py__init__!   s    z_NodeNameCollector.__init__c                    s&   | j t| tt| | d S r   )r   appendr   NodeNamesuperr   DefaultNodeVisit)r	   node	__class__r
   r   r   %   s    z#_NodeNameCollector.DefaultNodeVisitc                 C   s   | j t| d S r   )r   r   r   r   r	   Zleafr
   r
   r   DefaultLeafVisit)   s    z#_NodeNameCollector.DefaultLeafVisitc                 C   s   | j |j | | d S r   )r   r   valuer   r   r
   r
   r   
Visit_NAME,   s    z_NodeNameCollector.Visit_NAME)	__name__
__module____qualname____doc__r   r   r   r   __classcell__r
   r
   r   r   r      s
   	r   z
foo = bar
baz = x
z
if x:
  if y:
    return z
c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
PytreeVisitorTestc                 C   sJ   t 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)ZfoobarZbazx)r   ParseCodeToTree_VISITOR_TEST_SIMPLE_CODEr   VisitassertEqualr   r   r	   tree	collectorZexpected_namesZexpected_name_node_valuesr
   r
   r   !testCollectAllNodeNamesSimpleCode?   s    

z3PytreeVisitorTest.testCollectAllNodeNamesSimpleCodec                 C   sJ   t t}t }|| g d}| ||j g d}| ||j d S )N)r   if_stmtr!   r!   COLONsuiter#   INDENTr/   r!   r!   r0   r1   r#   r2   r   Zreturn_stmtr!   r!   r#   DEDENTr3   r$   )ifr&   r4   yreturnz)r   r'   _VISITOR_TEST_NESTED_CODEr   r)   r*   r   r   r+   r
   r
   r   !testCollectAllNodeNamesNestedCodeN   s    

z3PytreeVisitorTest.testCollectAllNodeNamesNestedCodec                 C   sR   t t}t }tj|d| | }| d| | d| | d| d S N)Ztarget_streamzfile_input [3 children]zNAME(Leaf(NAME, 'foo'))zEQUAL(Leaf(EQUAL, '=')))	r   r'   r(   r   r   ZPyTreeDumperr)   getvalueassertInr	   r,   streamZdump_outputr
   r
   r   
testDumper_   s    
zPytreeVisitorTest.testDumperc                 C   sN   t t}t }tj||d | }| d| | d| | d| d S r:   )r   r'   r(   r   r   Z
DumpPyTreer;   r<   r=   r
   r
   r   testDumpPyTreek   s    
z PytreeVisitorTest.testDumpPyTreeN)r   r   r   r.   r9   r?   r@   r
   r
   r
   r   r   =   s   r   __main__)r   Zunittestior   Zyapf.pytreer   r   ZPyTreeVisitorr   r(   r8   ZTestCaser   r   mainr
   r
   r
   r   <module>   s   :