
    -Ph                         d dl 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                     dS dS )    N)TransformTest)
find_firstfind_all)Nodes	ExprNodesc                   f    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d ZdS )TestTreePathNc                 T    | j         |                     g d          | _         | j         S )Nz
            def decorator(fun):  # DefNode
                return fun       # ReturnStatNode, NameNode
            @decorator           # NameNode
            def decorated():     # DefNode
                pass
            )_treerun_pipeline)selfs    b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/Cython/Compiler/Tests/TestTreePath.py_build_treezTestTreePath._build_tree	   s2    :**2 0  DJ z    c           	         |                                  }|                     dt          t          |d                               |                     dt          t          |d                               |                     dt          t          |d                               |                     dt          t          |d                               d S )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 899:::CL 9 9::;;;C,> ? ?@@AAAC,G H HIIJJJJJr   c           	      T   |                                  }|                     dt          t          |d                               |                     dt          t          |d                               |                     dt          t          |d                               d S )N
   z//*   z//DefNode//*r   z//NameNode//*r   r   s     r   test_node_path_starz TestTreePath.test_node_path_star   s    S!U!3!344555CN ; ;<<===CO < <==>>>>>r   c           	          |                                  }|                     dt          t          |d                               |                     ddgt          |d                     d S )Nr   z//NameNode/@namefun	decoratorr   r   s     r   test_node_path_attributez%TestTreePath.test_node_path_attribute!   sh    C,> ? ?@@AAA%-x;M/N/NOOOOOr   c           	          |                                  }|                     dt          t          |d                               |                     dgt          |d                     d S )Nr   z//ReturnStatNode/@value.namer   r   r   s     r   test_node_path_attribute_dottedz,TestTreePath.test_node_path_attribute_dotted&   se    C,J K KLLMMM%(1.L"M"MNNNNNr   c           	          |                                  }|                     dt          t          |d                               |                     dt          t          |d                               d S )Nr   z!//DefNode/ReturnStatNode/NameNodez//ReturnStatNode/NameNoder   r   s     r   test_node_path_childz!TestTreePath.test_node_path_child+   sk    C,O P PQQRRRC,G H HIIJJJJJr   c           	         |                                  }|                     dt          t          |d                               |                     dt          t          |d                               |                     dt          t          |d                               |                     t          j        t          t          |d                               d S )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_predicate0   s    C,I J JKKLLLC,D E EFFGGGC,J K KLLMMM-j,JKKLL	N 	N 	N 	N 	Nr   c           	         |                                  }|                     dt          t          |d                               |                     dt          t          |d                               |                     dt          t          |d                               |                     t          j        t          t          |d                               d S )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_step8   s    C,D E EFFGGGC,G H HIIJJJC,T U UVVWWW-j,TUUVV	X 	X 	X 	X 	Xr   c           	         |                                  }|                     dt          t          |d                               |                     t          j        t          t          |d                               d S )Nr   //NameNode[@name])r   r   r   r   r   NameNoder*   r   r   s     r   test_node_path_attribute_existsz,TestTreePath.test_node_path_attribute_exists@   s~    C,? @ @AABBB+j,?@@AA	C 	C 	C 	C 	Cr   c           	          |                                  }|                     dt          t          |d                               |                     dt          t          |d                               d S )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_notF   sk    C,D E EFFGGGC,G H HIIJJJJJr   c           	         |                                  }|                     dt          t          |d                               |                     dt          t          |d                               |                     dt          t          |d                               |                     dt          t          |d                               |                     dt          t          |d                               d S )	Nr   z,//DefNode[.//ReturnStatNode and .//NameNode]r   z1//DefNode[.//ReturnStatNode and .//DecoratorNode]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_andK   s    C,Z [ [\\]]]C,_ ` `aabbbC,L M MNNOOOC,L M MNNOOOC,U V VWWXXXXXr   c           	      z   |                                  }|                     dt          t          |d                               |                     dt          t          |d                               |                     dt          t          |d                               |                     dt          t          |d                               |                     dt          t          |d                               |                     dt          t          |d                               d S )	Nr   z0//DefNode[.//ReturnStatNode or .//DecoratorNode]r/   r   z//NameNode[@honking]z//NameNode[@name or @honking]z//NameNode[@honking or @name]z&//DefNode[.//NameNode[@name] or @name]r   r   s     r   test_node_path_orzTestTreePath.test_node_path_orS   s   C,^ _ _``aaaC,? @ @AABBBC,B C CDDEEEC,K L LMMNNNC,K L LMMNNNC,T U UVVWWWWWr   c           	          |                                  }|                     dt          t          |d                               d S )Nr   z//NameNode[@name = 'decorator']r   r   s     r   )test_node_path_attribute_string_predicatez6TestTreePath.test_node_path_attribute_string_predicate\   sB    C,M N NOOPPPPPr   c           	      T   |                                  }|                     dt          t          |d                               |                     dt          t          |d                               |                     dt          t          |d                               d S )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_predicate`   s    C,K L LMMNNNC,Y Z Z[[\\\C,n o oppqqqqqr   )__name__
__module____qualname__r   r   r   r   r!   r#   r%   r+   r-   r1   r3   r5   r7   r9   r;    r   r   r	   r	      s       E	 	 	K K K? ? ?P P P
O O O
K K K
N N NX X XC C CK K K
Y Y YX X XQ Q Qr r r r rr   r	   __main__)unittestCython.TestUtilsr   Cython.Compiler.TreePathr   r   Cython.Compilerr   r   r	   r<   mainr?   r   r   <module>rF      s     * * * * * * 9 9 9 9 9 9 9 9 , , , , , , , ,^r ^r ^r ^r ^r= ^r ^r ^r@ zHMOOOOO r   