Домашни > Bang the ranga! > Решения > Решението на Николай Георгиев

Резултати
3 точки от тестове
0 точки от учител

3 точки общо

10 успешни теста
0 неуспешни теста
Код

 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 от точка заради хумора, така че ще закръглим на колкото си изкарал от тестовете.
История
Това решение има само една версия.