
    Ae                         d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
  G d de      Zedk(  r e j                          yy)	    N)	PrintTree)TransformTest)
find_firstfind_all)Nodes	ExprNodesc                   ^    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zy)TestTreePathNc                 `    | j                   | j                  g d      | _         | j                   S )Nz
            def decorator(fun):  # DefNode
                return fun       # ReturnStatNode, NameNode
            @decorator           # NameNode
            def decorated():     # DefNode
                pass
            )_treerun_pipeline)selfs    Blib/python3.12/site-packages/Cython/Compiler/Tests/TestTreePath.py_build_treezTestTreePath._build_tree
   s1    ::**2 0 DJ zz    c           	      L   | j                         }| j                  dt        t        |d                   | j                  dt        t        |d                   | j                  dt        t        |d                   | j                  dt        t        |d                   y )N   z	//DefNodez
//NameNode   z//ReturnStatNodez//DefNode//ReturnStatNoder   assertEquallenr   r   ts     r   test_node_pathzTestTreePath.test_node_path   s    CK 89:CL 9:;C,> ?@AC,G HIJr   c           	         | j                         }| j                  dt        t        |d                   | j                  dt        t        |d                   | j                  dt        t        |d                   y )N
   z//*   z//DefNode//*r   z//NameNode//*r   r   s     r   test_node_path_starz TestTreePath.test_node_path_star   sd    S!U!345CN ;<=CO <=>r   c           	          | j                         }| j                  dt        t        |d                   | j                  ddgt        |d             y )Nr   z//NameNode/@namefun	decoratorr   r   s     r   test_node_path_attributez%TestTreePath.test_node_path_attribute"   sJ    C,> ?@A%-x;M/NOr   c           	          | j                         }| j                  dt        t        |d                   | j                  dgt        |d             y )Nr   z//ReturnStatNode/@value.namer    r   r   s     r   test_node_path_attribute_dottedz,TestTreePath.test_node_path_attribute_dotted'   sG    C,J KLM%(1.L"MNr   c           	          | j                         }| j                  dt        t        |d                   | j                  dt        t        |d                   y )Nr   z!//DefNode/ReturnStatNode/NameNodez//ReturnStatNode/NameNoder   r   s     r   test_node_path_childz!TestTreePath.test_node_path_child,   sJ    C,O PQRC,G HIJr   c           	      h   | j                         }| j                  dt        t        |d                   | j                  dt        t        |d                   | j                  dt        t        |d                   | j                  t        j
                  t        t        |d                   y )Nr   z//DefNode[.//ForInStatNode]r   //DefNode[.//NameNode]r   z//ReturnStatNode[./NameNode]r   r   r   r   r   ReturnStatNodetyper   r   s     r   test_node_path_node_predicatez*TestTreePath.test_node_path_node_predicate1   s    C,I JKLC,D EFGC,J KLM--j,JKL	Nr   c           	      h   | j                         }| j                  dt        t        |d                   | j                  dt        t        |d                   | j                  dt        t        |d                   | j                  t        j
                  t        t        |d                   y )Nr   r(   r   z//DefNode[.//NameNode]//*r   z&//DefNode[.//NameNode]//ReturnStatNoder)   r   s     r   "test_node_path_node_predicate_stepz/TestTreePath.test_node_path_node_predicate_step9   s    C,D EFGC,G HIJC,T UVW--j,TUV	Xr   c           	          | j                         }| j                  dt        t        |d                   | j                  t        j
                  t        t        |d                   y )Nr   z//NameNode[@name])r   r   r   r   r   NameNoder+   r   r   s     r   test_node_path_attribute_existsz,TestTreePath.test_node_path_attribute_existsA   sT    C,? @AB++j,?@A	Cr   c           	          | j                         }| j                  dt        t        |d                   | j                  dt        t        |d                   y )Nr   z//NameNode[not(@name)]r   z//NameNode[not(@honking)]r   r   s     r   #test_node_path_attribute_exists_notz0TestTreePath.test_node_path_attribute_exists_notG   sJ    C,D EFGC,G HIJr   c           	      L   | j                         }| j                  dt        t        |d                   | j                  dt        t        |d                   | j                  dt        t        |d                   | j                  dt        t        |d                   y )Nr   z,//DefNode[.//ReturnStatNode and .//NameNode]r   z//NameNode[@honking and @name]z//NameNode[@name and @honking]r   z'//DefNode[.//NameNode[@name] and @name]r   r   s     r   test_node_path_andzTestTreePath.test_node_path_andL   s    C,Z [\]C,L MNOC,L MNOC,U VWXr   c           	      n    | j                         }| j                  dt        t        |d                   y )Nr   z//NameNode[@name = 'decorator']r   r   s     r   )test_node_path_attribute_string_predicatez6TestTreePath.test_node_path_attribute_string_predicateS   s-    C,M NOPr   c           	         | j                         }| j                  dt        t        |d                   | j                  dt        t        |d                   | j                  dt        t        |d                   y )Nr   z//DefNode[.//NameNode[@name]]r   z+//DefNode[.//NameNode[@name = 'decorator']]z@//DefNode[.//ReturnStatNode[./NameNode[@name = 'fun']]/NameNode]r   r   s     r   "test_node_path_recursive_predicatez/TestTreePath.test_node_path_recursive_predicateW   sg    C,K LMNC,Y Z[\C,n opqr   )__name__
__module____qualname__r   r   r   r   r"   r$   r&   r,   r.   r1   r3   r5   r7   r9    r   r   r
   r
      sS    E	K?P
O
K
NXCK
YQrr   r
   __main__)unittestCython.Compiler.Visitorr   Cython.TestUtilsr   Cython.Compiler.TreePathr   r   Cython.Compilerr   r   r
   r:   mainr=   r   r   <module>rE      s?     - * 9 ,Tr= Trl zHMMO r   