| f | import tempfile | f | import tempfile |
| import unittest | | import unittest |
| import os | | import os |
| from bangaranga import does_the_banga_rang, TheBangaDoesNotRangError | | from bangaranga import does_the_banga_rang, TheBangaDoesNotRangError |
| | | |
| class TestDoesTheBangaRang(unittest.TestCase): | | class TestDoesTheBangaRang(unittest.TestCase): |
| def setUp(self): | | def setUp(self): |
| self.temp_dir = tempfile.TemporaryDirectory() | | self.temp_dir = tempfile.TemporaryDirectory() |
| | | |
| def tearDown(self): | | def tearDown(self): |
| self.temp_dir.cleanup() | | self.temp_dir.cleanup() |
| | | |
| def create_file(self, content): | | def create_file(self, content): |
| file_path = os.path.join(self.temp_dir.name, "bangaranga_input.txt") | | file_path = os.path.join(self.temp_dir.name, "bangaranga_input.txt") |
| with open(file_path, "w") as test_file: | | with open(file_path, "w") as test_file: |
| test_file.write(content) | | test_file.write(content) |
| | | |
| return file_path | | return file_path |
| | | |
| def test_returns_zero_when_there_is_no_bangaranga_word(self): | | def test_returns_zero_when_there_is_no_bangaranga_word(self): |
| file_name = self.create_file("Does the banga rang?") | | file_name = self.create_file("Does the banga rang?") |
| self.assertEqual(does_the_banga_rang(file_name), 0) | | self.assertEqual(does_the_banga_rang(file_name), 0) |
| | | |
| def test_returns_one_when_there_is_one_whole_bangaranga_word(self): | | def test_returns_one_when_there_is_one_whole_bangaranga_word(self): |
| file_name = self.create_file("let's bangaranga") | | file_name = self.create_file("let's bangaranga") |
| self.assertEqual(does_the_banga_rang(file_name), 1) | | self.assertEqual(does_the_banga_rang(file_name), 1) |
| | | |
| def test_returns_two_when_concatenate_two_words_in_one(self): | | def test_returns_two_when_concatenate_two_words_in_one(self): |
| file_name = self.create_file("banga is ranga") | | file_name = self.create_file("banga is ranga") |
| self.assertEqual(does_the_banga_rang(file_name), 2) | | self.assertEqual(does_the_banga_rang(file_name), 2) |
| | | |
| def test_returns_three_when_concatenate_three_words_in_one(self): | | def test_returns_three_when_concatenate_three_words_in_one(self): |
| file_name = self.create_file("bang a small ranga") | | file_name = self.create_file("bang a small ranga") |
| self.assertEqual(does_the_banga_rang(file_name), 3) | | self.assertEqual(does_the_banga_rang(file_name), 3) |
| | | |
| t | | t | def test_returns_zero_when_bangaranga_is_part_of_another_word(self): |
| | | file_name = self.create_file("letsbangarangatonight") |
| | | self.assertEqual(does_the_banga_rang(file_name), 0) |
| | | |
| def test_checks_if_input_is_case_insensitive(self): | | def test_checks_if_input_is_case_insensitive(self): |
| file_name = self.create_file("BANGARANGA") | | file_name = self.create_file("BANGARANGA") |
| self.assertEqual(does_the_banga_rang(file_name), 1) | | self.assertEqual(does_the_banga_rang(file_name), 1) |
| | | |
| def test_checks_if_words_are_in_correct_order(self): | | def test_checks_if_words_are_in_correct_order(self): |
| file_name = self.create_file("ranga is banga") | | file_name = self.create_file("ranga is banga") |
| self.assertEqual(does_the_banga_rang(file_name), 0) | | self.assertEqual(does_the_banga_rang(file_name), 0) |
| | | |
| def test_checks_if_return_minimal_count_of_bangaranga_words(self): | | def test_checks_if_return_minimal_count_of_bangaranga_words(self): |
| file_name = self.create_file("bang a banga ranga bangaranga") | | file_name = self.create_file("bang a banga ranga bangaranga") |
| self.assertEqual(does_the_banga_rang(file_name), 1) | | self.assertEqual(does_the_banga_rang(file_name), 1) |
| | | |
| def test_returns_custom_error_when_file_cannot_be_read(self): | | def test_returns_custom_error_when_file_cannot_be_read(self): |
| file_error = os.path.join(self.temp_dir.name, "file_error.txt") | | file_error = os.path.join(self.temp_dir.name, "file_error.txt") |
| with self.assertRaises(TheBangaDoesNotRangError): | | with self.assertRaises(TheBangaDoesNotRangError): |
| does_the_banga_rang(file_error) | | does_the_banga_rang(file_error) |
| | | |
| if __name__ == "__main__": | | if __name__ == "__main__": |
| unittest.main() | | unittest.main() |
31.05.2026 18:16
31.05.2026 18:17