o
    h                     @   s   d dl Z d dlZd dlT d dlmZmZmZmZmZm	Z	 e j
je j
jgZe jdd Ze jdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Ze jdddd Zdd ZdS )    N)*)DocumentIDTEXTNERCONSTITUENCY	SENTIMENTc                   C   s:   t dtdit dtdit dtdigt dtdit d	td
iggS )N   unban   mox   opal   ban   Lurrus)r   r    r   r   W/var/www/html/env_mimamsha/lib/python3.10/site-packages/stanza/tests/common/test_doc.pysentences_dict	   s   




r   c                 C   s   t | }|S )N)r   )r   docr   r   r   r      s   r   c                 C   s|   t | jt |ksJ t| j|D ]*\}}|j| ksJ t |jt |ks'J t|j|D ]\}}|j|t ks:J q-qdS )zS
    Test that sentences & token text are properly set when constructing a doc
    N)len	sentenceszipr   tokenstextr   )r   r   sentenceraw_sentencetoken	raw_tokenr   r   r   test_basic_values   s   r    c                 C   s@   | j dddgdd | jd jdksJ | jd jdksJ dS )	z:
    Test setting a field on the sentences themselves
    	sentiment40Tfieldscontentsto_sentencer   r	   N)setr   r!   r   r   r   r   test_set_sentence"   s   r*   c                 C   s6   g d}| j t|dd | jtdd}||ksJ dS )z'
    Test setting values on tokens
    )OARTIFACTr,   r+   CATT)r%   r&   to_token)
from_tokenN)r(   r   get)r   ner_contentsresultr   r   r   test_set_tokens-   s   r3   c                 C   s   | j D ]}tdd |jD dksJ qddg}| jt|dd t| j |D ]\}}dd |jD }t|d	ks:J |d |sCJ q&ddg}| jt|dd t| j |D ]\}}d
d |jD }t|d	ksjJ |d |ssJ qVdS )zX
    Test that setting the constituency tree on a doc sets the constituency comment
    c                 S      g | ]	}| d r|qS z# constituency
startswith.0xr   r   r   
<listcomp>?       z-test_constituency_comment.<locals>.<listcomp>r   asdfzzzzTr$   c                 S   r4   r5   r6   r8   r   r   r   r;   H   r<   r	   c                 S   r4   r5   r6   r8   r   r   r   r;   S   r<   N)r   r   commentsr(   r   r   endswith)r   r   treesexpectedconstituency_commentsr   r   r   test_constituency_comment:   *   
rD   c                 C   s   | j D ]}tdd |jD dksJ qddg}| jt|dd t| j |D ]\}}dd |jD }t|d	ks:J |d |sCJ q&d
dg}| jt|dd t| j |D ]\}}dd |jD }t|d	ksjJ |d |ssJ qVdS )zM
    Test that setting the sentiment on a doc sets the sentiment comment
    c                 S   r4   z# sentimentr6   r8   r   r   r   r;   \   r<   z*test_sentiment_comment.<locals>.<listcomp>r   12Tr$   c                 S   r4   rF   r6   r8   r   r   r   r;   e   r<   r	   3r"   c                 S   r4   rF   r6   r8   r   r   r   r;   p   r<   N)r   r   r?   r(   r   r   r@   )r   r   
sentimentsrB   sentiment_commentsr   r   r   test_sentiment_commentW   rE   rL   c                 C   sb  t | jD ]\}}tdd |jD dksJ |jd| ks J qd| jd _| jd jdks1J tdd | jd jD dksBJ d| jd jv sLJ | d	 t | jD ]+\}}|jd|d	  kseJ td
d | jd jD dksvJ d|d	  |jv sJ qV| jd d | jd jdksJ d| jd jv sJ tdd | jd jD dksJ dS )zP
    Test that setting the sent_id on a sentence sets the sentiment comment
    c                 S   r4   z	# sent_idr6   r8   r   r   r   r;   y   r<   z(test_sent_id_comment.<locals>.<listcomp>r	   z%dfoor   c                 S   r4   rM   r6   r8   r   r   r   r;   }   r<   z# sent_id = foo
   c                 S   r4   rM   r6   r8   r   r   r   r;      r<   z# sent_id = %dz# sent_id = barbarc                 S   r4   rM   r6   r8   r   r   r   r;      r<   N)	enumerater   r   r?   sent_idreindex_sentencesadd_comment)r   sent_idxr   r   r   r   test_sent_id_commentt   s    "
"&rV   c                 C   s   | j d jdu s
J tdd | j d jD dksJ d| j d _tdd | j d jD dks2J d| j d jv s<J | j d jdksFJ | j d d	 td
d | j d jD dks_J | j d jdksiJ dS )zN
    Test that setting the doc_id on a sentence sets the document comment
    r   Nc                 S   r4   z# doc_idr6   r8   r   r   r   r;      r<   z'test_doc_id_comment.<locals>.<listcomp>rN   c                 S   r4   rW   r6   r8   r   r   r   r;      r<   r	   z# doc_id = fooz# doc_id = barc                 S   r4   rW   r6   r8   r   r   r   r;      r<   rP   )r   doc_idr   r?   rT   r)   r   r   r   test_doc_id_comment   s   """rY   module)scopec                   C   s   t jtdS )N)dir)stanzaPipelineTEST_MODELS_DIRr   r   r   r   pipeline   s   r`   c                 C   s   d}| |}t |jdksJ | }t|}t |jdks!J t |jdks*J |jd j|jd jks8J |jd j|jd jksFJ dS )z
    Brief test of the serialized format

    Checks that NER entities are correctly set.
    Also checks that constituency & sentiment are set on the sentences.
    zJohn Bauer works at Stanfordr   r	   r   N)r   entsto_serializedr   from_serializedr   constituencyr!   )r`   r   r   
serializeddoc2r   r   r   test_serialized   s   
 rg   )pytestr]   stanza.testsstanza.models.common.docr   r   r   r   r   r   marktravisr`   
pytestmarkfixturer   r   r    r*   r3   rD   rL   rV   rY   rg   r   r   r   r   <module>   s&     



