U
    Be                     @   sT   d dl Z d dlZd dlmZ d dlmZ d dlmZ G dd dZG dd dZ	dS )	    N)FreqDist)NgramCounter
everygramsc                   @   s\   e Zd ZdZe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 )TestNgramCounterzATests for NgramCounter that only involve lookup, no modification.c                 C   sF   t dt dg}tdd |D | _tdd |D | _t | _d S )NabcdZegdbec                 s   s   | ]}t |d dV  qdS )   max_lenNr   .0sent r   z/var/www/nmhs-web.org.in/public_html/infoladakh/backend/venv/lib/python3.8/site-packages/nltk/test/unit/lm/test_counter.py	<genexpr>   s     z/TestNgramCounter.setup_class.<locals>.<genexpr>c                 s   s   | ]}t |d dV  qdS )   r	   Nr   r   r   r   r   r      s     )listr   trigram_counterbigram_counterunittestTestCasecase)selftextr   r   r   setup_class   s    zTestNgramCounter.setup_classc                 C   s(   | j  dkst| j dks$td S )N      )r   NAssertionErrorr   r   r   r   r   test_N   s    zTestNgramCounter.test_Nc                 C   s2   t | jdkst| jd  t | jdks.td S )Nr   2   r   )lenr   r   r   r   r   r   $test_counter_len_changes_with_lookup"   s    
z5TestNgramCounter.test_counter_len_changes_with_lookupc                 C   s   | j d | j jkstd S )N   )r   unigramsr   r   r   r   r    test_ngram_order_access_unigrams'   s    z1TestNgramCounter.test_ngram_order_access_unigramsc                 C   sb   t  }dddddg}dddd	d
dg}| jd }| jd }| j||  | j||  d S )Nab)r)   c)eg)r,   d)r-   r)   r(   )r)   )r-   )r+   r*   )r,   r   r   )r   r   r   r   assertCountEqualZ
conditions)r   r   Zexpected_trigram_contextsZexpected_bigram_contextsZbigramsZtrigramsr   r   r   test_ngram_conditional_freqdist*   s    

z0TestNgramCounter.test_ngram_conditional_freqdistc                 C   s4   | j dg d dkst| j dg d dks0td S )Nr(   r)   r$   r*   r   r   r   r   r   r   test_bigram_counts_seen_ngrams;   s    z/TestNgramCounter.test_bigram_counts_seen_ngramsc                 C   s   | j dg d dkstd S )Nr)   zr   r2   r   r   r   r    test_bigram_counts_unseen_ngrams?   s    z1TestNgramCounter.test_bigram_counts_unseen_ngramsc                 C   s   | j d dkstd S )Nr)   r   r2   r   r   r   r   test_unigram_counts_seen_wordsB   s    z/TestNgramCounter.test_unigram_counts_seen_wordsc                 C   s   | j d dkstd S )Nr4   r   r2   r   r   r   r   +test_unigram_counts_completely_unseen_wordsE   s    z<TestNgramCounter.test_unigram_counts_completely_unseen_wordsN)__name__
__module____qualname____doc__classmethodr   r    r#   r&   r1   r3   r5   r6   r7   r   r   r   r   r      s   

r   c                   @   sT   e Zd Zedd Zejddg dgdd Zdd	 Z	d
d Z
dd Zdd ZdS )TestNgramCounterTrainingc                 C   s   t  | _t | _d S )N)r   counterr   r   r   r   r   r   r   r   J   s    z$TestNgramCounterTraining.setup_classr    Nc                 C   s*   t |}d|kst|d t ks&td S )Nr   r$   )r   r   r   )r   r   testr   r   r   test_empty_inputsO   s    z*TestNgramCounterTraining.test_empty_inputsc                 C   sN   t d}tdd |D g}|d r(t|d r4t| j||d   d S )Nr   c                 S   s   g | ]
}|fqS r   r   )r   wr   r   r   
<listcomp>W   s     zCTestNgramCounterTraining.test_train_on_unigrams.<locals>.<listcomp>r   r   r$   )r   r   r   r   r0   keys)r   wordsr>   r   r   r   test_train_on_unigramsU   s
    z/TestNgramCounterTraining.test_train_on_unigramsc              	   C   sf   ddddg}ddgddgddgg}t t t|g W 5 Q R X t t t|g W 5 Q R X d S )NZCheckthisout!)pytestZraises	TypeErrorr   )r   Zstr_sentZ	list_sentr   r   r   test_train_on_illegal_sentences]   s    z8TestNgramCounterTraining.test_train_on_illegal_sentencesc                 C   s&   ddg}t |g}t|d r"td S )Nr'   r*   r-   r   )r   boolr   )r   Zbigram_sentr>   r   r   r   test_train_on_bigramsg   s    
z.TestNgramCounterTraining.test_train_on_bigramsc                 C   sp   ddddg}t |g}dg}ddg}dg}| j||d	   | j||d
   | j||d   d S )Nr'   rM   )r+   fr,   )hrQ   r.   r/   )r+   rP   r$   r   r   )r   r   r0   rD   )r   Z
mixed_sentr>   r%   Zbigram_contextsZtrigram_contextsr   r   r   test_train_on_mixl   s    
z*TestNgramCounterTraining.test_train_on_mix)r8   r9   r:   r<   r   rJ   markZparametrizerA   rF   rL   rO   rR   r   r   r   r   r=   I   s   


r=   )
rJ   r   Znltkr   Znltk.lmr   Z	nltk.utilr   r   r=   r   r   r   r   <module>   s   9