1import unittest
2from unittest.mock import patch, mock_open
3from bangaranga import does_the_banga_rang, TheBangaDoesNotRangError
4
5class TestDoesBangaRanga(unittest.TestCase):
6
7 @patch("builtins.open", mock_open(read_data="banga the ranga"))
8 def test_two_words(self):
9 result = does_the_banga_rang("тук_няма_значение_какво_е.txt")
10 self.assertEqual(result, 2)
11
12 @patch("builtins.open", mock_open(read_data="bang a small ranga"))
13 def test_three_words(self):
14 result = does_the_banga_rang("ама_наистина_няма_знaчение.txt")
15 self.assertEqual(result, 3)
16
17 @patch("builtins.open", mock_open(read_data="chunga-changa bangaranga"))
18 def test_single_word_bangaranga(self):
19 result = does_the_banga_rang("ще_си_пуша_когато_на_мен_ми_се_пуши.txt")
20 self.assertEqual(result, 1)
21
22 @patch("builtins.open", mock_open(read_data="ranga banga"))
23 def test_wrong_order_returns_zero(self):
24 result = does_the_banga_rang("не_си_познал.txt")
25 self.assertEqual(result, 0)
26
27 @patch("builtins.open", mock_open(read_data="BANGARANGA"))
28 def test_case_insensitive(self):
29 result = does_the_banga_rang("пуша_си_цигарата_и_не_ми_пука_че_лукът_е_лев_и_двайсет.txt")
30 self.assertEqual(result, 1)
31
32 @patch("builtins.open", mock_open(read_data="banga ranga bangaranga ban garan ga"))
33 def test_minimum_word_count(self):
34 result = does_the_banga_rang("пуша_си_цигарата_и_не_ми_пука_че_лукът_е_лев_и_двайсет.txt")
35 self.assertEqual(result, 1)
36
37 @patch("builtins.open", side_effect=OSError)
38 def test_missing_file_raises_custom_error(self, mock_file):
39 with self.assertRaises(TheBangaDoesNotRangError):
40 does_the_banga_rang("откакто_се_помъкна_с_тая.txt")
41
42 @patch("builtins.open", mock_open(read_data="banga something"))
43 def test_incomplete_bangaranga_returns_zero(self):
44 result = does_the_banga_rang("направо_ми_счерни_живота.txt")
45 self.assertEqual(result, 0)
46
47 @patch("builtins.open", mock_open(read_data="xbangaranga"))
48 def test_word_boundary(self):
49 result = does_the_banga_rang("само_ме_ядосва.txt")
50 self.assertEqual(result, 0)
51
52 @patch("builtins.open", mock_open(read_data=""))
53 def test_empty_file_returns_zero(self):
54 result = does_the_banga_rang("вече_нямам_нещо_готино_да_кажа.txt")
55 self.assertEqual(result, 0)
56
57 @patch("builtins.open", side_effect=IOError)
58 def test_io_error_raises_custom_error(self, mock_file):
59 with self.assertRaises(TheBangaDoesNotRangError):
60 does_the_banga_rang("адиос_мучачос_компанйерос_бай_бай_чао_по_дяволитее.txt")
..........
----------------------------------------------------------------------
Ran 10 tests in 0.265s
OK
Виктор Бечев
31.05.2026 18:16Хубаво е да имаш `if __name__ == "__main__": ...` в тестовите си файлове. Бих ти взел точка, но бих ти дал 0.6 от точка заради хумора, така че ще закръглим на колкото си изкарал от тестовете.
|