
    g                     `    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      Z G d d      Z	y)	    N)FreqDist)NgramCounter
everygramsc                   P    e Zd ZdZed        Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zy)TestNgramCounterzATests for NgramCounter that only involve lookup, no modification.c                     t        d      t        d      g}t        d |D              | _        t        d |D              | _        t	        j
                         | _        y )Nabcdegdbec              3   6   K   | ]  }t        |d         yw)   max_lenNr   .0sents     S/var/www/openai/venv/lib/python3.12/site-packages/nltk/test/unit/lm/test_counter.py	<genexpr>z/TestNgramCounter.setup_class.<locals>.<genexpr>   s      ,
48DJtQ''D   c              3   6   K   | ]  }t        |d         yw)   r   Nr   r   s     r   r   z/TestNgramCounter.setup_class.<locals>.<genexpr>   s     *XSW4:dA+F+FSWr   )listr   trigram_counterbigram_counterunittestTestCasecase)selftexts     r   setup_classzTestNgramCounter.setup_class   sT    Vd7m,+ ,
48,
  
 +*XSW*XX%%'	    c                     | j                   j                         dk(  sJ | j                  j                         dk(  sJ y )N      )r   Nr   r   s    r   test_NzTestNgramCounter.test_N   s<    ""$$&",,,##%%'2---r!   c                     t        | j                        dk(  sJ | j                  d    t        | j                        dk(  sJ y )Nr   2   r   )lenr   r&   s    r   $test_counter_len_changes_with_lookupz5TestNgramCounter.test_counter_len_changes_with_lookup!   sB    4&&'1,,,B4&&'1,,,r!   c                 T    | j                   d   | j                   j                  k(  sJ y )N   )r   unigramsr&   s    r    test_ngram_order_access_unigramsz1TestNgramCounter.test_ngram_order_access_unigrams&   s'    ""1%)<)<)E)EEEEr!   c                     t        j                         }g d}g d}| j                  d   }| j                  d   }| j                  j	                  ||j                                | j                  j	                  ||j                                y )N)ab)r3   c)eg)r6   d)r7   r3   )r2   )r3   )r7   )r5   r4   )r6   r   r   )r   r   r   r   assertCountEqual
conditions)r   r   expected_trigram_contextsexpected_bigram_contextsbigramstrigramss         r   test_ngram_conditional_freqdistz0TestNgramCounter.test_ngram_conditional_freqdist)   s}      "%
! $T &&q)''*		""#;W=O=O=QR		""#<h>Q>Q>STr!   c                 d    | j                   dg   d   dk(  sJ | j                   dg   d   dk(  sJ y )Nr2   r3   r-   r4   r   r&   s    r   test_bigram_counts_seen_ngramsz/TestNgramCounter.test_bigram_counts_seen_ngrams:   sB    ""C5)#.!333""C5)#.!333r!   c                 4    | j                   dg   d   dk(  sJ y )Nr3   zr   rB   r&   s    r    test_bigram_counts_unseen_ngramsz1TestNgramCounter.test_bigram_counts_unseen_ngrams>   s"    ""C5)#.!333r!   c                 ,    | j                   d   dk(  sJ y )Nr3   r   rB   r&   s    r   test_unigram_counts_seen_wordsz/TestNgramCounter.test_unigram_counts_seen_wordsA       ""3'1,,,r!   c                 ,    | j                   d   dk(  sJ y )NrE   r   rB   r&   s    r   +test_unigram_counts_completely_unseen_wordsz<TestNgramCounter.test_unigram_counts_completely_unseen_wordsD   rI   r!   N)__name__
__module____qualname____doc__classmethodr    r'   r+   r/   r@   rC   rF   rH   rK    r!   r   r   r      sA    K( (.-
FU"44--r!   r   c                   ~    e Zd Zed        Zej                  j                  ddg dg      d        Zd Z	d Z
d Zd	 Zy)
TestNgramCounterTrainingc                 T    t               | _        t        j                         | _        y )N)r   counterr   r   r   r&   s    r   r    z$TestNgramCounterTraining.setup_classI   s    #~%%'	r!   r    Nc                 J    t        |      }d|vsJ |d   t               k(  sJ y )Nr   r-   )r   r   )r   r   tests      r   test_empty_inputsz*TestNgramCounterTraining.test_empty_inputsN   s,    D!}}Aw(*$$$r!   c                     t        d      }t        |D cg c]  }|f c}g      }|d   rJ |d   rJ | j                  j                  ||d   j	                                y c c}w )Nr
   r   r   r-   )r   r   r   r:   keys)r   wordswrU   s       r   test_train_on_unigramsz/TestNgramCounterTraining.test_train_on_unigramsT   se    Vu 5u!!u 5671:~1:~		""5'!*//*;<	 !6s   
A#c                 
   g d}ddgddgddgg}t        j                  t              5  t        |g       d d d        t        j                  t              5  t        |g       d d d        y # 1 sw Y   8xY w# 1 sw Y   y xY w)N)Checkthisout!r`   ra   rb   rc   )pytestraises	TypeErrorr   )r   str_sent	list_sents      r   test_train_on_illegal_sentencesz8TestNgramCounterTraining.test_train_on_illegal_sentences\   sm    0v&%F	]]9%($ & ]]9%)% &% &% &%s   A-A9-A69Bc                 D    ddg}t        |g      }t        |d         rJ y )Nr1   r4   r7   r   )r   bool)r   bigram_sentrU   s      r   test_train_on_bigramsz.TestNgramCounterTraining.test_train_on_bigramsf   s-    !:.}-
####r!   c                 F   g d}t        |g      }dg}ddg}dg}| j                  j                  ||d   j                                | j                  j                  ||d   j                                | j                  j                  ||d   j                                y )	N)r1   rk   )r5   fr6   )hrq   r8   r9   )r5   rp   r-   r   r   )r   r   r:   r[   )r   
mixed_sentrU   r.   bigram_contextstrigram_contextss         r   test_train_on_mixz*TestNgramCounterTraining.test_train_on_mixk   s    F

|,5!6*&<		""8WQZ__->?		""?GAJOO4EF		""#3WQZ__5FGr!   )rL   rM   rN   rP   r    rd   markparametrizerY   r^   ri   rn   ru   rQ   r!   r   rS   rS   H   sT    ( ( [[Vb"d^4% 5%
=&$
	Hr!   rS   )
r   rd   nltkr   nltk.lmr   	nltk.utilr   r   rS   rQ   r!   r   <module>r{      s-          4- 4-n,H ,Hr!   