
    Ofl                         S r SSKJr  SSKJr  SSKrSSKJr  SSKJ	r	  S r
S r " S	 S
\5      r " S S\5      r " S S\5      rg)z*
Mock test for Stanford CoreNLP wrappers.
    )TestCase)	MagicMockN)corenlp)Treec                 D    [         R                  " SS9q [        R                  5         g ! [         a    [        R
                  " S5         N8f = f! [         R                   a9  n[        R
                  " SR                  UR                  5      5         S nAg S nAff = f)Ni(#  )portz$Could not instantiate CoreNLPServer.zhSkipping CoreNLP tests because the server could not be started. Make sure that the 9000 port is free. {})
r   CoreNLPServerserverLookupErrorpytestskipstartCoreNLPServerErrorformatstrerror)modulees     =/usr/lib/python3/dist-packages/nltk/test/unit/test_corenlp.pysetup_moduler      s~    <&&D1
	  <:;<
 %% 


#	
 	

s&   , A  AAB&/BBc                 ,    [         R                  5         g )N)r
   stop)r   s    r   teardown_moduler       s    
KKM    c                       \ rS rSrS rSrg)TestTokenizerAPI$   c                 H   [         R                  " 5       nSSSSSSSSSS.SSS	S
SSSS.SSSSSSSS.SSSSSSSS.SSSSS	SSS.SSSSSSSS.SSSSSSSS.SSSS S!S"S"S.S#SS S$S%S&S&S./	S'.SSS#S(S)SS*S*S.SSS+S,SS-S-S.SSS.S/SS0S0S.SSS1S2SS3S3S.SSS4S5S	S6S6S.SSS7S8SS9S9S.SSS8S:SS&S&S./S'.SSSS;S<SS=S=S.SSS<S>SS&S&S./S'./0n[        US?9Ul        S@n/ SAQn[	        UR                  U5      5      nUR                  R                  S@SBSC0SD9  U R                  XE5        g )EN	sentencesr           Good)afterbeforecharacterOffsetBegincharacterOffsetEndindexoriginalTextword         muffins         cost      $
   3.88         in         New   #      Yorkz  r   	   .r(   tokens&   ,   Please-   0   buy1   3   me4   7   two8   :   of;   ?   them@   A   G   ThanksH   return_valuezHGood muffins cost $3.88
in New York.  Please buy me
two of them.
Thanks.)r#   r.   r2   r5   r8   r<   r@   rD   rF   rK   rN   rQ   rT   rW   rZ   rF   r^   rF   
annotatorsztokenize,ssplit
properties)r   CoreNLPParserr   api_calllisttokenizeassert_called_once_withassertEqual)selfcorenlp_tokenizerapi_return_valueinput_stringexpected_outputtokenized_outputs         r   test_tokenizeTestTokenizerAPI.test_tokenize%   s   #113  &)&(4523%&,2$* &)&)4524%&,5$- &)&)4624%&,2$* &(&)4624%&,/$' &*&(4624%&,2$* &)&*4624%&,0$( &)&)4624%&,1$) &(&)4624%&,2$* &*&(4624%&,/$'SRUn  &)&*4624%&,4$, &)&)4624%&,1$) &*&)4624%&,0$( &)&*4624%&,1$) &)&)4624%&,0$( &(&)4624%&,2$* &*&(4624%&,/$'o@CJ  &(&*4624%&,4$, &(&(4624%&,/$'wrt
j &/<L%M"d
*   1 : :< HI""::Y$&78 	; 	
 	;r    N)__name__
__module____qualname____firstlineno__rq   __static_attributes__rs   r   r   r   r   $   s    W<r   r   c                   &    \ rS rSrS rS rS rSrg)TestTaggerAPI   c                 F   [         R                  " SS9nSSSSSSS.S	S
SSSS.SSSSSS.SSSSSS.SSSSSS.SSSSSS.SSSSSS.SSSSSS.SSSSSS./	SSSSSS.S	S
SSSS.SSSSSS.SSSSSS.SSSSSS.SSSSSS.SSSSSS.S SSSSS.SSSSSS./	SSSSSS.S	S
SSSS.SSSSSS.SSSSSS.SSSSSS.SSSSSS.SSSSSS.S SSSSS.SSSSSS./	SS!S"S#SSSS$SS%SS&.	S"S"SSS
S'SS(SS&.	S"S"SS)SSSS*SS&.	S"S"S+S,SSSS-SS&.	S"S"S.S/SSSS0SS&.	S"S"S1S2SS3SS*SS&.	S"S"S4S5SSSS6SS&.	S"S"S7S8SSSS9SS&.	S#S"S:S;SSSS<SS&.	/	S=./0n[        US>9Ul        S?R	                  5       n/ S@QnUR                  U5      nUR                  R                  S?SASBSC.SD9  U R                  XE5        g )ENpostagtyper   ROOTr"   Whatr   dep	dependentdependentGlossgovernorgovernorGlosscopr-   isdetr1   ther!   airspeednsubjcaser+   rW   rC   swallowr;   ancompoundr?   unladennmodpunctrE   ?znmod:ofz(ROOT
  (SBARQ
    (WHNP (WP What))
    (SQ (VBZ is)
      (NP
        (NP (DT the) (NN airspeed))
        (PP (IN of)
          (NP (DT an) (NN unladen) (NN swallow)))))
    (. ?)))r   r    whatWP	r$   r%   r&   r'   r(   lemmar)   r}   r*   beVBZ   DTr,      NN   r7   INr9   r:   ar=   "   JJrB   *   VB+   rJ   rF   basicDependenciesenhancedDependenciesenhancedPlusPlusDependenciesr(   parserH   r`   z,What is the airspeed of an unladen swallow ?)	)r   r   )r   r   )r   r   )r   r   )rW   r   )r   r   )r   r   )r   r   )r   rF   trueztokenize,ssplit,poszssplit.isOneSentencerb   rc   r   re   r   rf   splittagri   rj   rk   corenlp_taggerrm   input_tokensro   tagged_outputs         r   test_pos_taggerTestTaggerAPI.test_pos_tagger   sJ    ..u=  $*)*.4()-3 $))*.2()-3 $))*.3()-7 $+)*.8()-3 $*)*.2()-6 $))*.2()-6 $.)*.7()-6 $*)*.7()-7 $+)*.1()-3s@*F $*)*.4()-3 $))*.2()-3 $))*.3()-7 $+)*.8()-3 $*)*.2()-6 $))*.2()-6 $.)*.7()-6 $-)*.7()-7 $+)*.1()-3s@-F $*)*.4()-3 $))*.2()-3 $))*.3()-7 $+)*.8()-3 $*)*.2()-6 $))*.2()-6 $.)*.7()-6 $-)*.7()-7 $+)*.1()-3s@5B  ^ &)&(4523%&%+,2#'$*
 &)&)4523%&%),0#($(
 &)&)4524%&%*,1#'$)
 &)&)4624%&%/,6#'$.
 &)&)4624%&%),0#'$(
 &)&)4624%&%(,0#'$(
 &)&)4624%&%.,5#'$-
 &)&)4624%&%.,5#'$-
 &(&)4624%&%(,/#&$'
sdMkmo
`	 #,9I"JEKKM

 '**<877:(.3 	8 	
 	8r   c                    [         R                  " SS9nSSSSSSSS	S
S	SS	S.
SSSSSSS
SSSS.
SSSSSSSSSSS.
SSSSSSSSSSS.
SSSSSSSSS SS.
SSS!S"S#S$S%S$SS$S.
SSS&S'S(S)S%S)SS)S.
SSS*S+SS,S%S,SS,S.
SSS-S.SS/SS/S S/S.
SSS0S1S2S3SS3SS3S.
/
S4./0n[        US59Ul        S6R	                  5       n/ S7QnUR                  U5      nUR                  R                  S6S8S9S:.S;9  U R                  XE5        g )<Nnerr~   r   r   r   r    r!   r"   RamiPERSONNNP)
r$   r%   r&   r'   r(   r   r   r)   r}   r*   r+   rC   r-   EidrE   r   r1   r   Or   r   r,   r   studystudyingVBGr   r7   atr   r9      r;   StonyORGANIZATIONr>   rB   r?   Brookr   .   
University/   rO   r<   2   rR   
   NYrG   r`   z4Rami Eid is studying at Stony Brook University in NY)
)r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r<   r   )r   r   r   ztokenize,ssplit,nerr   rc   r   r   s         r   test_ner_taggerTestTaggerAPI.test_ner_taggerL  s    ..u=  &)&(4523%&%+#+,2#($* &)&)4523%&%*#+,1#($) &)&)4524%&%)#&,0#($( &)&)4624%&%,#&,6#($. &)&)4624%&%)#&,0#'$( &)&)4624%&%,#1,3#($+ &)&)4624%&%,#1,3#($+ &)&)4624%&%1#1,8#($0 &)&)4624%&%)#&,0#'$( &(&)4624%'%)#&,0#($([y|~@
D #,9I"JMSSU
 '**<877B(.3 	8 	
 	8r   c                     U R                  [        5         [        R                  " SS9nS S S 5        g ! , (       d  f       g = f)Ntestr~   )assertRaises
ValueErrorr   re   )rk   r   s     r   test_unexpected_tagtype%TestTaggerAPI.test_unexpected_tagtype  s,    z*$226BN +**s	   4
Ars   N)rt   ru   rv   rw   r   r   r   rx   rs   r   r   rz   rz      s    J9X
]9~Cr   rz   c                        \ rS rSrS rS rSrg)TestParserAPIi  c                    [         R                  " 5       nSSSSSSS.SSS	SSS.S
SSSSS.S
SSSSS.SSSSSS.SSSSSS.SSSSSS.S
SSSSS.SSSSSS./	SSSSSS.SSS	SSS.S
SSSSS.S
SSSSS.SSSSSS.SSSSSS.SSSSSS.S
SSSSS.SSSSSS./	SSSSSS.SSS	SSS.S
SSSSS.S
SSSSS.SSSSSS.SSSSSS.SSSSSS.S
SSSSS.SSSSSS./	SSSSSSSSS	S S	S!.	SSSSSSSS"SS!.	SSS#S$SSSS"SS!.	SSS%S&SSSS'SS!.	SSS(S)SS*SS+SS!.	SSS,S-SSSS.SS!.	SSS/S0SSSS SS!.	SSS1S2SSSS"SS!.	SSS3S4SSSS'SS!.	/	S5./0n[        US69Ul        S7R	                  5       n[        S[        S8[        S8[        S S	/5      [        S"S/5      [        S"S/5      [        S'S/5      /5      [        S8[        S8[        S9S/5      /5      [        S:[        S.S/5      [        S8[        S S/5      [        S"S/5      [        S'S/5      /5      /5      /5      /5      /5      n[        UR                  U5      5      nUR                  R                  S7S;S<0S=9  U R                  XE5        g )>Nr   r   r!   foxr   r   r   r"   Theamodr-   quickr1   brownr   r+   jumpsr   r;   overrE   dogr?   r   rC   lazyr   	nmod:overz(ROOT
  (NP
    (NP (DT The) (JJ quick) (JJ brown) (NN fox))
    (NP
      (NP (NNS jumps))
      (PP (IN over)
        (NP (DT the) (JJ lazy) (NN dog))))))r   r    r   r   r   r         r4   r   r      jumpr   r:   r>   r   rA   r   rB   '   (   r   r   r`   +The quick brown fox jumps over the lazy dogNPNNSPPssplit.eolonlyr   rc   )
r   re   r   rf   r   r   nextr   ri   rj   rk   corenlp_parserrm   rn   ro   parsed_datas         r   
test_parseTestParserAPI.test_parse  s    ..0  $*)*.3()-3 $))*.3()-2 $*)*.5()-2 $*)*.5()-2 $))*.5()-2 $*)*.4()-2 $))*.3()-2 $*)*.4()-2 $*)*.3()-4s@*F $*)*.3()-3 $))*.3()-2 $*)*.5()-2 $*)*.5()-2 $))*.5()-2 $*)*.4()-2 $))*.3()-2 $*)*.4()-2 $/)*.3()-4s@-F $*)*.3()-3 $))*.3()-2 $*)*.5()-2 $*)*.5()-2 $))*.5()-2 $*)*.4()-2 $))*.3()-2 $*)*.4()-2 $/)*.3()-4s@5B  B &)&(4523%&%*,1#'$)
 &)&)4523%&%,,3#'$+
 &)&)4624%&%,,3#'$+
 &)&)4624%&%*,1#'$)
 &)&)4624%&%+,3#($+
 &)&)4624%&%+,2#'$*
 &)&)4624%&%*,1#'$)
 &)&)4624%&%+,2#'$*
 &(&)4624%&%*,1#'$)
sdMkmo
b	 #,9I"JDJJL  $TE7 3 $TG9 5 $TG9 5 $TE7 3	   $TD	,B+C D $$((,TF8(<(,,004TE70C04TF80D04TE70C-.)*
%&!"!#&
P >//=>779(&1 	8 	
 	6r   c                    [         R                  " 5       nSSSSSSS.SSS	S
SS.SSSS
SS.SSSS
SS.SS
SSSS.SSSSSS.SSSSSS.SSSSSS.SSSSSS./	SSSSSS.SSS	S
SS.SSSS
SS.SSSS
SS.SS
SSSS.SSSSSS.SSSSSS.SSSSSS.SSSSSS./	SSSSSS.SSS	S
SS.SSSS
SS.SSSS
SS.SS
SSSS.SSSSSS.SSSSSS.SSSSSS.SSSSSS./	SSSSSSSS	SS	S .	SSS
SSSSS!SS .	SSS"S#SSSS!SS .	SSS$S%S
SSS&SS .	SSS'S(SS)SS*SS .	SSS+S,SSSS-SS .	SSS.S/SSSSSS .	SSS0S1SSSS!SS .	SSS2S3SSSS&SS .	/	S4./0n[        US59Ul        S6R	                  5       n[        S[        S/ S7Q5      [        S/ S8Q5      /5      n[        UR                  U5      5      nUR                  R                  S6S9S:0S;9  U R                  XER                  5       5        g )<Nr   r   r+   r   r   r   r   r"   r   r!   r   r   r-   r   r1   r   r   r   r;   r   rE   r   r?   r   rC   r   r   r   r   r    r   r   r   r   r   r   r4   r   r   r   r   r   r:   r>   r   rA   r   rB   r   r   r   )r   r   r   r(   rH   r`   r   )r   r   r   )r   r   r   r   r   rc   )r   CoreNLPDependencyParserr   rf   r   r   r   r   ri   rj   treer   s         r   test_dependency_parser$TestParserAPI.test_dependency_parserX  sn    88:  $*)*.5()-3 $))*.3()-2 $*)*.5()-2 $*)*.5()-2 $+)*.3()-4 $*)*.4()-2 $))*.3()-2 $*)*.4()-2 $*)*.3()-4s@*F $*)*.5()-3 $))*.3()-2 $*)*.5()-2 $*)*.5()-2 $+)*.3()-4 $*)*.4()-2 $))*.3()-2 $*)*.4()-2 $/)*.3()-4s@-F $*)*.5()-3 $))*.3()-2 $*)*.5()-2 $*)*.5()-2 $+)*.3()-4 $*)*.4()-2 $))*.3()-2 $*)*.4()-2 $/)*.3()-4s@5B  &)&(4523%&%*,1#'$)
 &)&)4523%&%,,3#'$+
 &)&)4624%&%,,3#'$+
 &)&)4624%&%*,1#'$)
 &)&)4624%&%+,3#($+
 &)&)4624%&%+,2#'$*
 &)&)4624%&%*,1#'$)
 &)&)4624%&%+,2#'$*
 &(&)4624%&%*,1#'$)
sdKjln
`	 #,9I"JDJJLU56U34
 >//=>779(&1 	8 	
 	*:*:*<=r   rs   N)rt   ru   rv   rw   r   r   rx   rs   r   r   r   r     s    e7ND>r   r   )__doc__unittestr   unittest.mockr   r   
nltk.parser   	nltk.treer   r   r   r   rz   r   rs   r   r   <module>r      sS     #   
$X<x X<vnCH nCbl
>H l
>r   