class TestCountWords(TestCase): def setUp(self): self.stattext = Stattext() def do_count_words(self, text): file_content = io.StringIO(text) return self.stattext._count_words(file_content) def test_count_on_single_line(self): text = "This is a test" result = self.do_count_words(text) expected = 4 self.assertEqual(result, expected) def test_count_on_multi_line(self): text = "This is a\n test" result = self.do_count_words(text) expected = 4 self.assertEqual(result, expected) def test_count_number_as_word(self): text = "The 4 is counted as a word" result = self.do_count_words(text) expected = 7 self.assertEqual(result, expected) def test_ignore_double_spaces(self): text = "this text has \n spaces" result = self.do_count_words(text) expected = 4 self.assertEqual(result, expected) def test_words_with_single_quote(self): text = "it's a quote" result = self.do_count_words(text) expected = 3 self.assertEqual(result, expected) def test_words_with_hyphen(self): text = "single-word" result = self.do_count_words(text) expected = 1 self.assertEqual(result, expected) def test_empty_file(self): text = "" result = self.do_count_words(text) expected = 0 self.assertEqual(result, expected) def test_empty_line(self): text = "\n" result = self.do_count_words(text) expected = 0 self.assertEqual(result, expected) def test_space(self): text = " " result = self.do_count_words(text) expected = 0 self.assertEqual(result, expected) def test_ignore_punctuaction(self): text = "this is awesome !!!" result = self.do_count_words(text) expected = 3 self.assertEqual(result, expected) def test_unicode(self): text = "Thíś íś ṕŕéttӳ fúń.\n And more, fun here" result = self.do_count_words(text) expected = 8 self.assertEqual(result, expected) def test_dots_word(self): text = "...just saying" result = self.do_count_words(text) expected = 2 self.assertEqual(result, expected) def test_only_signs(self): text = "... ,, : !! \'" result = self.do_count_words(text) expected = 0 self.assertEqual(result, expected)