ó
ù`]c           @@ s”   d  Z  d d l m Z m Z m Z d d l Z d d l m Z d d l m	 Z	 d d l
 m Z d e j f d „  ƒ  YZ e d	 k r e j ƒ  n  d S(
   u   
Unit tests for nltk.tgrep.
i    (   t   absolute_importt   print_functiont   unicode_literalsN(   t   b(   t   ParentedTree(   t   tgrept   TestSequenceFunctionsc           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 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 RS(   u5   
    Class containing unit tests for nltk.tgrep.
    c         C@ se   t  j d ƒ } |  j | d d d d d d d d	 d
 d d d d d d d d d d d d d g ƒ d S(   u.   
        Simple test of tokenization.
        u%   A .. (B !< C . D) | ![<< (E , F) $ G]u   Au   ..u   (u   Bu   !u   <u   Cu   .u   Du   )u   |u   [u   <<u   Eu   ,u   Fu   $u   Gu   ]N(   R   t   tgrep_tokenizet   assertEqual(   t   selft   tokens(    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_tokenize_simple   s2    c         C@ s,   |  j  t j t d ƒ ƒ t j d ƒ ƒ d S(   uM   
        Test that tokenization handles bytes and strs the same way.
        u%   A .. (B !< C . D) | ![<< (E , F) $ G]N(   R   R   R   R   (   R	   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_tokenize_encoding@   s    c         C@ s  |  j  t j d ƒ d d d g ƒ |  j  t j d ƒ d d d g ƒ |  j  t j d ƒ d d d g ƒ |  j  t j d	 ƒ d d
 d g ƒ |  j  t j d ƒ d d d g ƒ |  j  t j d ƒ d d d g ƒ |  j  t j d ƒ d d d g ƒ |  j  t j d ƒ d d d g ƒ |  j  t j d ƒ d d d g ƒ |  j  t j d ƒ d d d g ƒ |  j  t j d ƒ d d d g ƒ |  j  t j d ƒ d d d g ƒ |  j  t j d ƒ d d d g ƒ |  j  t j d ƒ d d d g ƒ |  j  t j d ƒ d d  d g ƒ |  j  t j d! ƒ d d" d g ƒ |  j  t j d# ƒ d d$ d g ƒ |  j  t j d% ƒ d d& d g ƒ |  j  t j d' ƒ d d( d g ƒ |  j  t j d) ƒ d d* d g ƒ |  j  t j d+ ƒ d d, d g ƒ |  j  t j d- ƒ d d. d g ƒ |  j  t j d/ ƒ d d0 d g ƒ |  j  t j d1 ƒ d d2 d g ƒ |  j  t j d3 ƒ d d4 d g ƒ |  j  t j d5 ƒ d d6 d g ƒ |  j  t j d7 ƒ d d8 d g ƒ |  j  t j d9 ƒ d d: d g ƒ |  j  t j d; ƒ d d< d g ƒ |  j  t j d= ƒ d d> d g ƒ |  j  t j d? ƒ d d@ d g ƒ |  j  t j dA ƒ d dB d d g ƒ |  j  t j dC ƒ d dB d d g ƒ |  j  t j dD ƒ d dB d d g ƒ |  j  t j dE ƒ d dB d
 d g ƒ |  j  t j dF ƒ d dB d d g ƒ |  j  t j dG ƒ d dB d d g ƒ |  j  t j dH ƒ d dB d d g ƒ |  j  t j dI ƒ d dB d d g ƒ |  j  t j dJ ƒ d dB d d g ƒ |  j  t j dK ƒ d dB d d g ƒ |  j  t j dL ƒ d dB d d g ƒ |  j  t j dM ƒ d dB d d g ƒ |  j  t j dN ƒ d dB d d g ƒ |  j  t j dO ƒ d dB d d g ƒ |  j  t j dP ƒ d dB d  d g ƒ |  j  t j dQ ƒ d dB d" d g ƒ |  j  t j dR ƒ d dB d$ d g ƒ |  j  t j dS ƒ d dB d& d g ƒ |  j  t j dT ƒ d dB d( d g ƒ |  j  t j dU ƒ d dB d* d g ƒ |  j  t j dV ƒ d dB d, d g ƒ |  j  t j dW ƒ d dB d. d g ƒ |  j  t j dX ƒ d dB d0 d g ƒ |  j  t j dY ƒ d dB d2 d g ƒ |  j  t j dZ ƒ d dB d4 d g ƒ |  j  t j d[ ƒ d dB d6 d g ƒ |  j  t j d\ ƒ d dB d8 d g ƒ |  j  t j d] ƒ d dB d: d g ƒ |  j  t j d^ ƒ d dB d< d g ƒ |  j  t j d_ ƒ d dB d> d g ƒ |  j  t j d` ƒ d dB d@ d g ƒ da S(b   u8   
        Test tokenization of basic link types.
        u   A<Bu   Au   <u   Bu   A>Bu   >u   A<3Bu   <3u   A>3Bu   >3u   A<,Bu   <,u   A>,Bu   >,u   A<-3Bu   <-3u   A>-3Bu   >-3u   A<-Bu   <-u   A>-Bu   >-u   A<'Bu   <'u   A>'Bu   >'u   A<:Bu   <:u   A>:Bu   >:u   A<<Bu   <<u   A>>Bu   >>u   A<<,Bu   <<,u   A>>,Bu   >>,u   A<<'Bu   <<'u   A>>'Bu   >>'u   A<<:Bu   <<:u   A>>:Bu   >>:u   A.Bu   .u   A,Bu   ,u   A..Bu   ..u   A,,Bu   ,,u   A$Bu   $u   A$.Bu   $.u   A$,Bu   $,u   A$..Bu   $..u   A$,,Bu   $,,u   A!<Bu   !u   A!>Bu   A!<3Bu   A!>3Bu   A!<,Bu   A!>,Bu   A!<-3Bu   A!>-3Bu   A!<-Bu   A!>-Bu   A!<'Bu   A!>'Bu   A!<:Bu   A!>:Bu   A!<<Bu   A!>>Bu   A!<<,Bu   A!>>,Bu   A!<<'Bu   A!>>'Bu   A!<<:Bu   A!>>:Bu   A!.Bu   A!,Bu   A!..Bu   A!,,Bu   A!$Bu   A!$.Bu   A!$,Bu   A!$..Bu   A!$,,BN(   R   R   R   (   R	   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_tokenize_link_typesI   s|    """""""""""""""""""""""""""""""%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%c         C@ s  |  j  t j d ƒ d d d g ƒ |  j  t j d ƒ d g ƒ |  j  t j d ƒ d d d d d	 g ƒ |  j  t j d
 ƒ d d d d d d	 g ƒ |  j  t j d ƒ d d d d d d d d d d	 d g ƒ |  j  t j d ƒ d d d d d d	 d g ƒ |  j  t j d ƒ d d d d d d d d d d d g ƒ |  j  t j d ƒ d d d d d d d d d g	 ƒ |  j  t j d ƒ d d d d d d d d d d d g ƒ |  j  t j d  ƒ d d d d d d d d d g	 ƒ |  j  t j d! ƒ d d d d" d d g ƒ d# S($   uJ   
        Test tokenization of the TGrep2 manual example patterns.
        u   NP < PPu   NPu   <u   PPu   /^NP/u   NP << PP . VPu   <<u   .u   VPu   NP << PP | . VPu   |u   NP !<< PP [> NP | >> VP]u   !u   [u   >u   >>u   ]u   NP << (PP . VP)u   (u   )u   NP <' (PP <, (IN < on))u   <'u   <,u   INu   onu   S < (A < B) < Cu   Su   Au   Bu   Cu   S < ((A < B) < C)u   S < (A < B < C)u   A<B&.Cu   &N(   R   R   R   (   R	   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_tokenize_examplesŒ   s2    ""%(("("c      	   C@ s2   |  j  t j d ƒ d d d d d d d g ƒ d S(	   u/   
        Test tokenization of quoting.
        u   "A<<:B"<<:"A $.. B"<"A>3B"<Cu   "A<<:B"u   <<:u	   "A $.. B"u   <u   "A>3B"u   CN(   R   R   R   (   R	   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_tokenize_quoting²   s    c         C@ s  |  j  t j d ƒ d g ƒ |  j  t j d ƒ d g ƒ |  j  t j d ƒ d g ƒ |  j  t j d ƒ d g ƒ |  j  t j d ƒ d d g ƒ |  j  t j d ƒ d d	 d
 d g ƒ |  j  t j d ƒ d d	 d
 d	 d g ƒ |  j  t j d ƒ d d	 d
 d	 d
 d g ƒ d S(   u2   
        Test tokenization of node names.
        u   Robertu	   /^[Bb]ob/u   *u   __u   N()u   N(u   )u   N(0,)u   0u   ,u   N(0,0)u   N(0,0,)N(   R   R   R   (   R	   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_tokenize_nodenames»   s    %(c         C@ sY   |  j  t j d ƒ d d d d d d d d d d	 d
 d d d d d d d
 d d g ƒ d S(   u9   
        Test tokenization of macro definitions.
        u4   @ NP /^NP/;
@ NN /^NN/;
@NP [!< NP | < @NN] !$.. @NNu   @u   NPu   /^NP/u   ;u   NNu   /^NN/u   @NPu   [u   !u   <u   |u   @NNu   ]u   $..N(   R   R   R   (   R	   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_tokenize_macrosË   s.    c         C@ s¨   t  j d ƒ } |  j t t j d | g ƒ ƒ d d	 g g ƒ |  j t t j d | g ƒ ƒ | d
 | d g g ƒ |  j t t j d | g ƒ ƒ d d d g g ƒ d S(   u`   
        Test a simple use of tgrep for finding nodes matching a given
        pattern.
        uA   (S (NP (DT the) (JJ big) (NN dog)) (VP bit) (NP (DT a) (NN cat)))u   NNi    i   i   u   NN|JJN(   i    i   (   i   i   (   i    i   (   i   i   (   i    i   (   i    i   (   i   i   (   R   t
   fromstringR   t   listR   t   tgrep_positionst   tgrep_nodes(   R	   t   tree(    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_node_simpleë   s    	.0c         C@ s‡   t  j d ƒ } |  j t t j d | g ƒ ƒ t t j d | g ƒ ƒ ƒ |  j t t j d | g ƒ ƒ t t j d | g ƒ ƒ ƒ d S(   u9   Test that the tgrep print operator ' is properly ignored.u   (S (n x) (N x))u   Nu   'Nu   /[Nn]/u   '/[Nn]/N(   R   R   R   R   R   R   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_node_printingû   s    c         C@ sÓ   t  j d ƒ } |  j t t j t d ƒ | g ƒ ƒ t t j d | g ƒ ƒ ƒ |  j t t j t d ƒ | g ƒ ƒ t t j d | g ƒ ƒ ƒ |  j t t j t d ƒ | g ƒ ƒ t t j d | g ƒ ƒ ƒ d S(   u]   
        Test that tgrep search strings handles bytes and strs the same
        way.
        uA   (S (NP (DT the) (JJ big) (NN dog)) (VP bit) (NP (DT a) (NN cat)))u   NNu   NN|JJN(   R   R   R   R   R   R   R   R   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_node_encoding  s    	c         C@ sl   t  j d ƒ } |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d d	 g g ƒ d S(
   uI   
        Test selecting nodes using case insensitive node names.
        u   (S (n x) (N x))u   "N"i   u   i@"N"i    N(   i   (   i    (   i   (   R   R   R   R   R   R   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_node_nocase  s    +c         C@ s¿   t  j d ƒ } |  j t t j d | g ƒ ƒ d
 g g ƒ |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d g g ƒ d	 S(   u?   
        Test selecting nodes using quoted node names.
        u   (N ("N" x) (N" x) ("\" x))u   "N"u   "\"N\""i    u   "N\""i   u   "\"\\\""i   N(    (   i    (   i   (   i   (   R   R   R   R   R   R   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_node_quoted$  s
    +++c         C@ sA   t  j d ƒ } |  j t t j d | g ƒ ƒ d d g g ƒ d S(   u/   
        Test regex matching on nodes.
        u$   (S (NP-SBJ x) (NP x) (NNP x) (VP x))u   /^NP/i    i   N(   i    (   i   (   R   R   R   R   R   R   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_node_regex.  s    c         C@ sr   t  j d ƒ } |  j t t j d | g ƒ ƒ d d	 g g ƒ |  j t t j d | g ƒ ƒ d
 d d g g ƒ d S(   u/   
        Test regex matching on nodes.
        u   (S (SBJ x) (SBJ1 x) (NP-SBJ x))u   /^SBJ/i    i   u   /SBJ/i   N(   i    (   i   (   i    (   i   (   i   (   R   R   R   R   R   R   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_node_regex_27  s    .c         @ sÙ   t  j d ƒ ‰  t ‡  f d †  t t ˆ  j ƒ  ƒ ƒ Dƒ ƒ } g  ˆ  j ƒ  D] } | | k rJ | ^ qJ } xj | D]b } d j | ƒ } t t	 j
 | ˆ  g ƒ ƒ } |  j t | d ƒ d ƒ |  j | d d | ƒ qo Wd S(   uE   
        Test matching on nodes based on NLTK tree position.
        u$   (S (NP-SBJ x) (NP x) (NNP x) (VP x))c         3@ s   |  ] } ˆ  j  | ƒ Vq d  S(   N(   t   leaf_treeposition(   t   .0t   x(   R   (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pys	   <genexpr>J  s    u   N{0}i    i   N(   R   R   t   sett   ranget   lent   leavest   treepositionst   formatR   R   R   R   (   R	   t   leaf_positionsR    t   tree_positionst   positiont   node_idR   (    (   R   s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_node_tree_positionC  s    ++c         C@ sl   t  j d ƒ } |  j t t j d | g ƒ ƒ d d g g ƒ |  j t t j d | g t ƒ ƒ g  g ƒ d S(   uS   
        Test node name matching with the search_leaves flag set to False.
        u   (S (A (T x)) (B (N x)))u   xi    i   N(   i    i    i    (   i   i    i    (   R   R   R   R   R   R   t   False(   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_node_noleavesS  s    (c         C@ s°  t  j d ƒ } |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d  d! d" d# d$ d% g g ƒ |  j t t j d | g ƒ ƒ d& g g ƒ |  j t t j d | g ƒ ƒ d' g g ƒ |  j t t j d	 | g ƒ ƒ d( g g ƒ |  j t t j d
 | g ƒ ƒ d) d* d+ d, d- d. g g ƒ |  j t t j d | g ƒ ƒ d/ d0 d1 g g ƒ |  j t t j d | g ƒ ƒ d2 d3 d4 d5 g g ƒ |  j t t j d | g ƒ ƒ d6 d7 g g ƒ |  j t t j d | g ƒ ƒ d8 d9 g g ƒ |  j t t j d | g ƒ ƒ d: d; g g ƒ |  j t t j d | g ƒ ƒ d< g g ƒ |  j t t j d | g ƒ ƒ d= g g ƒ |  j t t j d | g ƒ ƒ d> d? d@ dA dB g g ƒ t  j d ƒ } |  j t t j d | g ƒ ƒ dC g g ƒ |  j t t j d | g ƒ ƒ dD dE g g ƒ |  j t t j d | g ƒ ƒ dF dG dH dI dJ dK dL dM g g ƒ |  j t t j d | g ƒ ƒ dN g g ƒ t  j d ƒ } |  j t t j d | g ƒ ƒ dO g g ƒ |  j t t j d | g ƒ ƒ dP dQ dR dS dT dU dV dW g g ƒ t  j d ƒ } |  j t t j d | g ƒ ƒ dX dY dZ d[ d\ d] d^ g g ƒ |  j t t j d | g ƒ ƒ d_ d` da db dc dd de g g ƒ d S(f   uC   
        Test matching nodes based on dominance relations.
        u   (S (A (T x)) (B (N x)))u   * < Ti    u	   * < T > Su   * !< Ti   u
   * !< T > Su   * > Au   * > Bu   * !> Bu   * !> B >> Su   * >> Su   * >>, Su   * >>' Su   * << Tu   * <<' Tu   * <<1 Nu   * !<< Tu   (S (A (T x)) (B (T x) (N x )))u   * <: Tu   * !<: Tu   * !<: T > Su   (S (T (A x) (B x)) (T (C x)))u   * >: Tu   * !>: Tu=   (S (A (B (C (D (E (T x)))))) (A (B (C (D (E (T x))) (N x)))))u   * <<: Tu   * >>: AN(   i    (   i    (    (   i    i    (   i    i    i    (   i   (   i   i    (   i   i    i    (   i   (   i    i    (   i   i    (    (   i    (   i    i    (   i    i    i    (   i   (   i   i    i    (   i    (   i    i    (   i   (   i    (   i    i    (   i   (   i   i    (   i    (   i    i    (   i   (   i   i    (    (   i    (   i    (   i   (   i    i    (   i    i    i    (   i   (   i   i    (   i   i    i    (   i    (   i    (   i   (    (   i    i    (   i    i    i    (   i   (   i   i    (   i   i    i    (   i   i   (   i   i   i    (   i   (   i   i    (    (   i    (   i    i    (   i    i    i    (   i    i   (   i    i   i    (   i   (   i   i    i    (   i    (   i    i    (   i    i    i    (   i    i    i    i    (   i    i    i    i    i    (   i   i    i    i    (   i   i    i    i    i    (   i    i    (   i    i    i    (   i    i    i    i    (   i    i    i    i    i    (   i    i    i    i    i    i    (   i   i    (   i   i    i    (   R   R   R   R   R   R   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   tests_rel_dominance]  sv    ++++++((.+++."++"	c         C@ s8   t  j d ƒ } |  j t j t t j d | g ƒ ƒ d S(   uC   
        Test error handling of undefined tgrep operators.
        u   (S (A (T x)) (B (N x)))u   * >>> SN(   R   R   t   assertRaisesR   t   TgrepExceptionR   R   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_bad_operator´  s    c         C@ s{   t  j d ƒ } d } |  j t t j | | g ƒ ƒ d d g g ƒ d } |  j t t j | | g ƒ ƒ d	 d
 g g ƒ d S(   u`   
        Test that comments are correctly filtered out of tgrep search
        strings.
        u   (S (NN x) (NP x) (NN x))u=   
        @ NP /^NP/;
        @ NN /^NN/;
        @NN
        i    i   ug   
        # macros
        @ NP /^NP/;
        @ NN /^NN/;

        # search string
        @NN
        N(   i    (   i   (   i    (   i   (   R   R   R   R   R   R   (   R	   R   t   search1t   search2(    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_comments½  s
    .c         C@ sí   t  j d ƒ } |  j t t j d | g ƒ ƒ d
 g g ƒ |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d d g g ƒ d	 S(   u7   
        Test matching sister nodes in a tree.
        u   (S (A x) (B x) (C x))u   * $. Bi    u   * $.. Bu   * $, Bi   u   * $,, Bu   * $ BN(   i    (   i    (   i   (   i   (   i    (   i   (   R   R   R   R   R   R   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_rel_sister_nodesÓ  s    ++++c         C@ sÒ  t  j d ƒ } |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d	 | g ƒ ƒ d g g ƒ |  j t t j d
 | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d g g ƒ t  j d ƒ } |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d  g g ƒ |  j t t j d | g ƒ ƒ d! g g ƒ |  j t t j d | g ƒ ƒ d" g g ƒ |  j t t j d | g ƒ ƒ d# g g ƒ |  j t t j d | g ƒ ƒ d$ g g ƒ |  j t t j d | g ƒ ƒ d% g g ƒ |  j t t j d | g ƒ ƒ d& g g ƒ d S('   uP   
        Test matching nodes based on their index in their parent node.
        u   (S (A x) (B x) (C x))u   * >, Si    u   * >1 Su   * >2 Si   u   * >3 Si   u   * >' Su   * >-1 Su   * >-2 Su   * >-3 SuE   (S (D (A x) (B x) (C x)) (E (B x) (C x) (A x)) (F (C x) (A x) (B x)))u   * <, Au   * <1 Au   * <2 Au   * <3 Au   * <' Au   * <-1 Au   * <-2 Au   * <-3 AN(   i    (   i    (   i   (   i   (   i   (   i   (   i   (   i    (   i    (   i    (   i   (   i   (   i   (   i   (   i   (   i    (   R   R   R   R   R   R   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   tests_rel_indexed_childrenÞ  s&    ++++++++	+++++++c         C@ s¶  t  j d ƒ } |  j t t j d | g ƒ ƒ d d d g g ƒ |  j t t j d | g ƒ ƒ d d g g ƒ |  j t t j d | g ƒ ƒ d d d d d g g ƒ |  j t t j d | g ƒ ƒ d d d d d d d g g ƒ |  j t t j d | g ƒ ƒ d d  g g ƒ |  j t t j d	 | g ƒ ƒ d! d" d# d$ g g ƒ |  j t t j d | g ƒ ƒ d% d& d' d( d) d* g g ƒ |  j t t j d | g ƒ ƒ d+ d, d- d. g g ƒ d S(/   uD   
        Test matching nodes based on precedence relations.
        uV   (S (NP (NP (PP x)) (NP (AP x))) (VP (AP (X (PP x)) (Y (AP x)))) (NP (RC (NP (AP x)))))u   * . Xi    i   u   * . Yu   * .. Xu   * .. Yu   * , Xu   * , Yi   u   * ,, Xu   * ,, YN(   i    (   i    i   (   i    i   i    (   i   i    i    (   i   i    i    i    (   i    (   i    i    (   i    i    i    (   i    i   (   i    i   i    (   i    (   i    i    (   i    i    i    (   i    i   (   i    i   i    (   i   i    i    (   i   i    i    i    (   i   i    i   (   i   i    i   i    (   i   (   i   i    (   i   i    i    (   i   i    i    i    (   i   i    i   (   i   i    i   i    (   i   (   i   i    (   i   i    i    (   i   i    i    i    (   i   (   i   i    (   i   i    i    (   i   i    i    i    (   R   R   R   R   R   R   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_rel_precedence÷  s.    	+((c         C@ s  t  j d ƒ } |  j t t j d | g ƒ ƒ d g g ƒ t  j d ƒ } |  j t t j d | g ƒ ƒ d g g ƒ t  j d ƒ } |  j t t j d | g ƒ ƒ d d g g ƒ t  j d	 ƒ } |  j t t j d
 | g ƒ ƒ d d g g ƒ t  j d ƒ } |  j t t j d | g ƒ ƒ d g g ƒ t  j d ƒ } |  j t t j d | g ƒ ƒ d g g ƒ t  j d ƒ } |  j t t j d | g ƒ ƒ d g g ƒ t  j d ƒ } |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d  g g ƒ d S(!   uA   
        Test the Basic Examples from the TGrep2 manual.
        u   (S (NP (AP x)) (NP (PP x)))u   NP < PPi   u$   (S (NP x) (VP x) (NP (PP x)) (VP x))u   NP << PP . VPi   u6   (S (NP (AP x)) (NP (PP x)) (NP (DET x) (NN x)) (VP x))u   NP << PP | . VPuX   (S (NP (NP (PP x)) (NP (AP x))) (VP (AP (NP (PP x)) (NP (AP x)))) (NP (RC (NP (AP x)))))u   NP !<< PP [> NP | >> VP]i    u:   (S (NP (AP (PP x) (VP x))) (NP (AP (PP x) (NP x))) (NP x))u   NP << (PP . VP)ue   (S (NP (DET a) (NN cat) (PP (IN on) (NP x))) (NP (DET a) (NN cat) (PP (IN on) (NP x)) (PP x)) (NP x))u   NP <' (PP <, (IN < on))u;   (S (S (C x) (A (B x))) (S (C x) (A x)) (S (D x) (A (B x))))u   S < (A < B) < Cu/   (S (S (A (B x) (C x))) (S (S (C x) (A (B x)))))u   S < ((A < B) < C)u   S < (A < B < C)N(   i   (   i   (   i   (   i   (   i    i   (   i   i    i   (   i    (   i    (   i    (   i    (   i    (   R   R   R   R   R   R   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_examples  s>    ++	(		%	%	%	%c         C@ sf   t  j d ƒ } |  j t t j d | g ƒ ƒ d d g g ƒ |  j t j t t j d | g ƒ ƒ d S(	   u8   
        Test defining and using tgrep2 macros.
        ui   (VP (VB sold) (NP (DET the) (NN heiress)) (NP (NN deed) (PREP to) (NP (DET the) (NN school) (NN house))))u+   @ NP /^NP/;
@ NN /^NN/;
@NP !< @NP !$.. @NNi   i   u,   @ NP /^NP/;
@ NN /^NN/;
@CNP !< @NP !$.. @NNN(   i   (   i   i   (   R   R   R   R   R   R   R/   R0   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_use_macrosm  s    	c         C@ s   |  j  t j d ƒ d d d d d d d d d d d	 d
 d
 g ƒ |  j  t j d ƒ d d d d d d d d d d d d d d d	 d
 d
 g ƒ d S(   u#   Test tokenization of labeled nodes.u!   S < @SBJ < (@VP < (@VB $.. @OBJ))u   Su   <u   @SBJu   (u   @VPu   @VBu   $..u   @OBJu   )u%   S < @SBJ=s < (@VP=v < (@VB $.. @OBJ))u   =u   su   vN(   R   R   R   (   R	   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_tokenize_node_labels‡  sD    
c         C@ s\   |  j  t j d ƒ d d d d d d d d d d	 d d d
 d d d d d d d d g ƒ d S(   u(   Test tokenization of segmented patterns.u0   S < @SBJ=s < (@VP=v < (@VB $.. @OBJ)) : =s .. =vu   Su   <u   @SBJu   =u   su   (u   @VPu   vu   @VBu   $..u   @OBJu   )u   :u   =su   ..u   =vN(   R   R   R   (   R	   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt    test_tokenize_segmented_patterns²  s.    c         C@ s  d } t  j d ƒ } t  j d ƒ } | j d ƒ d d } d } |  j t t j | | g ƒ ƒ d ƒ |  j t t j | | g ƒ ƒ d ƒ |  j t t j | | g ƒ ƒ d ƒ |  j t t j | | g ƒ ƒ t t j | | g ƒ ƒ ƒ |  j t t j | | g ƒ ƒ d ƒ |  j t t j | | g ƒ ƒ d ƒ |  j t t j | | g ƒ ƒ d ƒ |  j t t j | | g ƒ ƒ t t j | | g ƒ ƒ ƒ d S(	   uN   
        Test labeled nodes.

        Test case from Emily M. Bender.
        uã   
            # macros
            @ SBJ /SBJ/;
            @ VP /VP/;
            @ VB /VB/;
            @ VPoB /V[PB]/;
            @ OBJ /OBJ/;

            # 1 svo
            S < @SBJ=s < (@VP=v < (@VB $.. @OBJ)) : =s .. =vu2   (S (NP-SBJ I) (VP (VB eat) (NP-OBJ (NNS apples))))u2   (S (VP (VB eat) (NP-OBJ (NNS apples))) (NP-SBJ I))u   

i    u!   S < @SBJ < (@VP < (@VB $.. @OBJ))u-   S < (/.*SBJ/ $.. (/VP/ < (/VB/ $.. /.*OBJ/)))N(	   R   R   t   splitt
   assertTrueR   R   R   R   t   assertFalse(   R	   t   searcht   sent1t   sent2t   search_firsthalft   search_rewrite(    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_labeled_nodesÏ  s&    		&&&&&&c         C@ sl   t  j d ƒ } |  j t t j d | g ƒ ƒ d g g ƒ |  j t t j d | g ƒ ƒ d d	 g g ƒ d S(
   um   
        Test that multiple (3 or more) conjunctions of node relations are
        handled properly.
        u'   ((A (B b) (C c)) (A (B b) (C c) (D d)))u   (A < B < C < D)i   u   (A < B < C)i    N(   i   (   i    (   i   (   R   R   R   R   R   R   (   R	   t   sent(    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_multiple_conjs÷  s
    %c         C@ s   t  j d ƒ } |  j t t j d | g ƒ ƒ d	 d
 g g ƒ |  j t t j d | g ƒ ƒ d d g g ƒ |  j t t j d | g ƒ ƒ d d g g ƒ d S(   up   
        Test that semicolons at the end of a tgrep2 search string won't
        cause a parse failure.
        uA   (S (NP (DT the) (JJ big) (NN dog)) (VP bit) (NP (DT a) (NN cat)))u   NNi    i   i   u   NN;u   NN;;N(   i    i   (   i   i   (   i    i   (   i   i   (   i    i   (   i   i   (   R   R   R   R   R   R   (   R	   R   (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   test_trailing_semicolon  s    	..(    t   __name__t
   __module__t   __doc__R   R   R   R   R   R   R   R   R   R   R   R   R   R   R+   R-   R.   R1   R4   R5   R6   R7   R8   R9   R:   R;   RD   RF   RG   (    (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyR      s<   	!			C	&				 					
					
	W						'	O		+		(	u   __main__(   RJ   t
   __future__R    R   R   t   unittestt   sixR   t	   nltk.treeR   t   nltkR   t   TestCaseR   RH   t   main(    (    (    s8   lib/python2.7/site-packages/nltk/test/unit/test_tgrep.pyt   <module>   s   ÿ ÿ þ