o
    rZh                     @   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       | ]	}t |d dV  qdS )   max_lenNr   .0sent r   M/var/www/auris/lib/python3.10/site-packages/nltk/test/unit/lm/test_counter.py	<genexpr>   s    
z/TestNgramCounter.setup_class.<locals>.<genexpr>c                 s   r   )   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	J | j dksJ d S )N      )r   Nr   r   r   r   r   test_N   s   zTestNgramCounter.test_Nc                 C   s2   t | jdks	J | jd  t | jdksJ d S )Nr   2   r	   )lenr   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J d S )N   )r   unigramsr   r   r   r    test_ngram_order_access_unigrams&   s   z1TestNgramCounter.test_ngram_order_access_unigramsc                 C   sT   t  }g d}g d}| 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J | j dg d dksJ d S )Nr(   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J d S )Nr)   zr   r2   r   r   r   r    test_bigram_counts_unseen_ngrams>   s   z1TestNgramCounter.test_bigram_counts_unseen_ngramsc                 C      | j d dks	J d S )Nr)   r   r2   r   r   r   r   test_unigram_counts_seen_wordsA      z/TestNgramCounter.test_unigram_counts_seen_wordsc                 C   r6   )Nr4   r   r2   r   r   r   r   +test_unigram_counts_completely_unseen_wordsD   r8   z<TestNgramCounter.test_unigram_counts_completely_unseen_wordsN)__name__
__module____qualname____doc__classmethodr   r    r#   r&   r1   r3   r5   r7   r9   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   I   s   z$TestNgramCounterTraining.setup_classr    Nc                 C   s*   t |}d|vs
J |d t ksJ d S )Nr   r$   )r   r   )r   r   testr   r   r   test_empty_inputsN   s   z*TestNgramCounterTraining.test_empty_inputsc                 C   sN   t d}tdd |D g}|d rJ |d rJ | j||d   d S )Nr   c                 S   s   g | ]}|fqS r   r   )r   wr   r   r   
<listcomp>V   s    zCTestNgramCounterTraining.test_train_on_unigrams.<locals>.<listcomp>r	   r   r$   )r   r   r   r0   keys)r   wordsr@   r   r   r   test_train_on_unigramsT   s
   z/TestNgramCounterTraining.test_train_on_unigramsc                 C   s   g d}ddgddgddgg}t t t|g W d    n1 s$w   Y  t t t|g W d    d S 1 s?w   Y  d S )N)Checkthisout!rI   rJ   rK   rL   )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J d S )Nr'   r*   r-   r	   )r   bool)r   Zbigram_sentr@   r   r   r   test_train_on_bigramsf   s   
z.TestNgramCounterTraining.test_train_on_bigramsc                 C   sl   g d}t |g}dg}ddg}dg}| j||d   | j||d   | j||d   d S )	N)r'   rP   )r+   fr,   )hrT   r.   r/   )r+   rS   r$   r   r	   )r   r   r0   rF   )r   Z
mixed_sentr@   r%   Zbigram_contextsZtrigram_contextsr   r   r   test_train_on_mixk   s   
z*TestNgramCounterTraining.test_train_on_mix)r:   r;   r<   r>   r   rM   markZparametrizerC   rH   rO   rR   rU   r   r   r   r   r?   H   s    


r?   )
r   rM   Znltkr   Znltk.lmr   Z	nltk.utilr   r   r?   r   r   r   r   <module>   s   7