a
    b                     @   sd   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 deZedkr`e   dS )	    N)	PrintTree)TransformTest)
find_firstfind_all)Nodes	ExprNodesc                   @   sx   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )TestTreePathNc                 C   s   | j d u r| g d| _ | j S )Nz
            def decorator(fun):  # DefNode
                return fun       # ReturnStatNode, NameNode
            @decorator           # NameNode
            def decorated():     # DefNode
                pass
            )_treeZrun_pipeline)self r   r/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/Cython/Compiler/Tests/TestTreePath.py_build_tree
   s    
zTestTreePath._build_treec                 C   sd   |   }| 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
   tr   r   r   test_node_path   s
    zTestTreePath.test_node_pathc                 C   sN   |   }| dtt|d | dtt|d | dtt|d d S )N
   z//*   z//DefNode//*r   z//NameNode//*r   r   r   r   r   test_node_path_star   s    z TestTreePath.test_node_path_starc                 C   s8   |   }| dtt|d | ddgt|d d S )Nr   z//NameNode/@namefun	decoratorr   r   r   r   r   test_node_path_attribute"   s    z%TestTreePath.test_node_path_attributec                 C   s6   |   }| dtt|d | dgt|d d S )Nr   z//ReturnStatNode/@value.namer   r   r   r   r   r   test_node_path_attribute_dotted'   s    z,TestTreePath.test_node_path_attribute_dottedc                 C   s8   |   }| dtt|d | dtt|d d S )Nr   z!//DefNode/ReturnStatNode/NameNodez//ReturnStatNode/NameNoder   r   r   r   r   test_node_path_child,   s    z!TestTreePath.test_node_path_childc                 C   sf   |   }| 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   ZReturnStatNodetyper   r   r   r   r   test_node_path_node_predicate1   s    z*TestTreePath.test_node_path_node_predicatec                 C   sf   |   }| 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   r   r   r   "test_node_path_node_predicate_step9   s    z/TestTreePath.test_node_path_node_predicate_stepc                 C   s:   |   }| dtt|d | tjtt|d d S )Nr   z//NameNode[@name])r   r   r   r   r   ZNameNoder    r   r   r   r   r   test_node_path_attribute_existsA   s
    z,TestTreePath.test_node_path_attribute_existsc                 C   s8   |   }| dtt|d | dtt|d d S )Nr   z//NameNode[not(@name)]r   z//NameNode[not(@honking)]r   r   r   r   r   #test_node_path_attribute_exists_notG   s    z0TestTreePath.test_node_path_attribute_exists_notc                 C   sd   |   }| 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   z//NameNode[@honking and @name]z//NameNode[@name and @honking]r   z'//DefNode[.//NameNode[@name] and @name]r   r   r   r   r   test_node_path_andL   s
    zTestTreePath.test_node_path_andc                 C   s"   |   }| dtt|d d S )Nr   z//NameNode[@name = 'decorator']r   r   r   r   r   )test_node_path_attribute_string_predicateS   s    z6TestTreePath.test_node_path_attribute_string_predicatec                 C   sN   |   }| 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   r   r   r   "test_node_path_recursive_predicateW   s    z/TestTreePath.test_node_path_recursive_predicate)__name__
__module____qualname__r	   r   r   r   r   r   r   r!   r"   r#   r$   r%   r&   r'   r   r   r   r   r      s   r   __main__)ZunittestZCython.Compiler.Visitorr   ZCython.TestUtilsr   ZCython.Compiler.TreePathr   r   ZCython.Compilerr   r   r   r(   mainr   r   r   r   <module>   s   V