class TestAvgLetterForWord(TestCase): def setUp(self): self.stattext = Stattext() def do_count_letters(self, text): file_content = io.StringIO(text) return self.stattext._count_alphanumeric(file_content) def do_avg_letters(self, text, precision=1): file_content = io.StringIO(text) return self.stattext._avg_letters(file_content, precision) def test_count_letters(self): text = "This is a good test" result = self.do_count_letters(text) expected = 15 self.assertEqual(result, expected) def test_count_letters_multi_line(self): text = "This\n is \na good test\n\n\n" result = self.do_count_letters(text) expected = 15 self.assertEqual(result, expected) def test_count_letters_ignoring_signs(self): text = " Hello, | World!! ...\n Is a ''good day''" result = self.do_count_letters(text) expected = 20 self.assertEqual(result, expected) def test_count_letters_empty_line(self): text = "" result = self.do_count_letters(text) expected = 0 self.assertEqual(result, expected) def test_count_letters_ignore_single_quote(self): text = "I'm" result = self.do_count_letters(text) expected = 2 self.assertEqual(result, expected) def test_count_digit_as_letters(self): text = "123" result = self.do_count_letters(text) expected = 3 self.assertEqual(result, expected) def test_avg_letter_single_line(self): text = "This is a good test" result = self.do_avg_letters(text) expected = 3.0 self.assertEqual(result, expected) def test_avg_letter_multi_line(self): text = "This is a good\n test\n\n" result = self.do_avg_letters(text) expected = 3.0 self.assertEqual(result, expected) def test_avg_unicode(self): text = "Thíś íś ṕŕéttӳ fúń.\n " expected = 3.8 result = self.do_avg_letters(text) self.assertEqual(result, expected) def test_avg_no_decimal(self): text = "Thíś íś ṕŕéttӳ fúń.\n " expected = 3 result = self.do_avg_letters(text, precision=0) self.assertEqual(result, expected) def test_avg_emtpy_file(self): text = "" expected = 0 result = self.do_avg_letters(text) self.assertEqual(result, expected)