class TestFrequentLetter(TestCase): def setUp(self): self.stattext = Stattext() def do_most_common_letter(self, text): file_content = io.StringIO(text) return self.stattext.most_common_letter(file_content) def test_ascii_count(self): text = "a"*2 + "b"*5 result = self.do_most_common_letter(text) expected = "b" self.assertEqual(result, expected) def test_ascii_count_multi_line(self): text = "a"*2 + "b"*5 +"\n"+"a"*5 result = self.do_most_common_letter(text) expected = "a" self.assertEqual(result, expected) def test_ignore_digits(self): text = "a1111\n232" result = self.do_most_common_letter(text) expected = "a" self.assertEqual(result, expected) def test_empty_file(self): text = "" result = self.do_most_common_letter(text) self.assertIsNone(result) def test_empty_line(self): text = "\n\n\n" result = self.do_most_common_letter(text) self.assertIsNone(result) def test_file_only_spaces(self): text = " \n \r\n" result = self.do_most_common_letter(text) self.assertIsNone(result) def test_ignore_punctuaction(self): text = "hello, world:\n?!:;.'" result = self.do_most_common_letter(text) expected = "l" self.assertEqual(result, expected) def test_upper_case_ignored(self): text = "BBb" result = self.do_most_common_letter(text) expected = "b" self.assertEqual(result, expected) def test_many_most_common_letter(self): text = "test is done" result = self.do_most_common_letter(text) expected = ['e','s','t'] self.assertEqual(sorted(result.replace(" ","")), expected) def test_unicode_text(self): text = "Thíś íś ṕŕéttӳ fúń" result = self.do_most_common_letter(text) expected = "t" self.assertEqual(result, expected)