o
    i                     @   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abcdegdbec                 s       | ]	}t |d dV  qdS )   max_lenNr   .0sent r   Y/var/www/edux/Edux_v2/venv/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   assertCountEqual
conditions)r   r   expected_trigram_contextsexpected_bigram_contextsbigrams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   r8   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   r8   r    r   r   r   test_unigram_counts_seen_wordsA      z/TestNgramCounter.test_unigram_counts_seen_wordsc                 C   r<   )Nr:   r   r8   r    r   r   r   +test_unigram_counts_completely_unseen_wordsD   r>   z<TestNgramCounter.test_unigram_counts_completely_unseen_wordsN)__name__
__module____qualname____doc__classmethodr   r!   r$   r'   r7   r9   r;   r=   r?   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   r1   keys)r   wordsrF   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!rO   rP   rQ   rR   )pytestraises	TypeErrorr   )r   str_sent	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   bigram_sentrF   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(   rY   )r,   fr-   )hr^   r/   r0   )r,   r]   r%   r   r
   )r   r   r1   rL   )r   
mixed_sentrF   r&   bigram_contextstrigram_contextsr   r   r   test_train_on_mixk   s   
z*TestNgramCounterTraining.test_train_on_mix)r@   rA   rB   rD   r   rS   markparametrizerI   rN   rX   r\   rb   r   r   r   r   rE   H   s    


rE   )
r   rS   nltkr   nltk.lmr   	nltk.utilr   r   rE   r   r   r   r   <module>   s   7