ó
¦V]c           @   s‹   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
 d e f d „  ƒ  YZ e d k r‡ e  j ƒ  n  d S(	   iÿÿÿÿN(   t	   PrintTree(   t   TransformTest(   t
   find_firstt   find_all(   t   Nodest	   ExprNodest   TestTreePathc           B   sƒ   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 RS(   c         C   s.   |  j  d  k r' |  j g  d ƒ |  _  n  |  j  S(   Nuà   
            def decorator(fun):  # DefNode
                return fun       # ReturnStatNode, NameNode
            @decorator           # NameNode
            def decorated():     # DefNode
                pass
            (   t   _treet   Nonet   run_pipeline(   t   self(    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt   _build_tree
   s    	c         C   sŒ   |  j  ƒ  } |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ d  S(   Ni   s	   //DefNodes
   //NameNodei   s   //ReturnStatNodes   //DefNode//ReturnStatNode(   R   t   assertEqualt   lenR   (   R
   t   t(    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt   test_node_path   s
    c         C   sm   |  j  ƒ  } |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ d  S(   Ni
   s   //*i   s   //DefNode//*i    s   //NameNode//*(   R   R   R   R   (   R
   R   (    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt   test_node_path_star   s    c         C   sN   |  j  ƒ  } |  j d t t | d ƒ ƒ ƒ |  j d d g t | d ƒ ƒ d  S(   Ni   s   //NameNode/@namet   funt	   decorator(   R   R   R   R   (   R
   R   (    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt   test_node_path_attribute"   s    c         C   sK   |  j  ƒ  } |  j d t t | d ƒ ƒ ƒ |  j d g t | d ƒ ƒ d  S(   Ni   s   //ReturnStatNode/@value.nameR   (   R   R   R   R   (   R
   R   (    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt   test_node_path_attribute_dotted'   s    c         C   sN   |  j  ƒ  } |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ d  S(   Ni   s!   //DefNode/ReturnStatNode/NameNodes   //ReturnStatNode/NameNode(   R   R   R   R   (   R
   R   (    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt   test_node_path_child,   s    c         C   s   |  j  ƒ  } |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ |  j t j t t | d ƒ ƒ ƒ d  S(   Ni    s   //DefNode[.//ForInStatNode]i   s   //DefNode[.//NameNode]i   s   //ReturnStatNode[./NameNode](   R   R   R   R   R   t   ReturnStatNodet   typeR   (   R
   R   (    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt   test_node_path_node_predicate1   s    c         C   s   |  j  ƒ  } |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ |  j t j t t | d ƒ ƒ ƒ d  S(   Ni   s   //DefNode[.//NameNode]i   s   //DefNode[.//NameNode]//*i   s&   //DefNode[.//NameNode]//ReturnStatNode(   R   R   R   R   R   R   R   R   (   R
   R   (    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt"   test_node_path_node_predicate_step9   s    c         C   sQ   |  j  ƒ  } |  j d t t | d ƒ ƒ ƒ |  j t j t t | d ƒ ƒ ƒ d  S(   Ni   s   //NameNode[@name](   R   R   R   R   R   t   NameNodeR   R   (   R
   R   (    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt   test_node_path_attribute_existsA   s    c         C   sN   |  j  ƒ  } |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ d  S(   Ni    s   //NameNode[not(@name)]i   s   //NameNode[not(@honking)](   R   R   R   R   (   R
   R   (    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt#   test_node_path_attribute_exists_notG   s    c         C   sŒ   |  j  ƒ  } |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ d  S(   Ni   s,   //DefNode[.//ReturnStatNode and .//NameNode]i    s   //NameNode[@honking and @name]s   //NameNode[@name and @honking]i   s'   //DefNode[.//NameNode[@name] and @name](   R   R   R   R   (   R
   R   (    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt   test_node_path_andL   s
    c         C   s/   |  j  ƒ  } |  j d t t | d ƒ ƒ ƒ d  S(   Ni   s   //NameNode[@name = 'decorator'](   R   R   R   R   (   R
   R   (    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt)   test_node_path_attribute_string_predicateS   s    c         C   sm   |  j  ƒ  } |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ |  j d t t | d ƒ ƒ ƒ d  S(   Ni   s   //DefNode[.//NameNode[@name]]i   s+   //DefNode[.//NameNode[@name = 'decorator']]s@   //DefNode[.//ReturnStatNode[./NameNode[@name = 'fun']]/NameNode](   R   R   R   R   (   R
   R   (    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt"   test_node_path_recursive_predicateW   s    N(   t   __name__t
   __module__R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyR      s   												t   __main__(   t   unittestt   Cython.Compiler.VisitorR    t   Cython.TestUtilsR   t   Cython.Compiler.TreePathR   R   t   Cython.CompilerR   R   R   R    t   main(    (    (    sA   lib/python2.7/site-packages/Cython/Compiler/Tests/TestTreePath.pyt   <module>   s   V