########################################################################### # Copyright 2019 (C) Hui Lan # Written permission must be obtained from the author for commercial uses. ########################################################################### import unittest from wordfreqCMD import remove_punctuation, freq, sort_in_descending_order from WordFreq import WordFreq class TestWordFrequency(unittest.TestCase): def test_word_frequency_normal_case(self): text = "BANANA; Banana, apple ORANGE Banana banana." wf = WordFreq(text) result = wf.get_freq() expected = [('banana', 4), ('orange', 1), ('apple', 1)] self.assertEqual(result, expected) def test_word_frequency_with_long_word(self): text = "apple banana " + "a" * 31 + " orange banana apple" wf = WordFreq(text, max_word_length=30) result = wf.get_freq() expected = [('banana', 2), ('apple', 2), ('orange', 1)] self.assertEqual(result, expected) def test_word_frequency_all_long_words(self): text = "a" * 31 + " " + "b" * 32 + " " + "c" * 33 wf = WordFreq(text, max_word_length=30) result = wf.get_freq() expected = [] self.assertEqual(result, expected) def test_word_frequency_with_punctuation(self): text = "Hello, world! Hello... hello; 'hello' --world--" wf = WordFreq(text) result = wf.get_freq() expected = [('hello', 4), ('world', 2)] self.assertEqual(result, expected) def test_word_frequency_empty_string(self): text = "" wf = WordFreq(text) result = wf.get_freq() expected = [] self.assertEqual(result, expected) def test_word_frequency_with_max_length_parameter(self): text = "apple banana apple" wf = WordFreq(text, max_word_length=5) result = wf.get_freq() expected = [('apple', 2)] self.assertEqual(result, expected) if __name__ == '__main__': unittest.main()