Домашни > Bang the ranga! > Решения > Решението на Иван Грозданов

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

2 точки общо

0 успешни теста
0 неуспешни теста
Код
Скрий всички коментари

 1import os
 2from os import path
 3import unittest
 4import tempfile
 5
 6from bangaranga import does_the_banga_rang, TheBangaDoesNotRangError
 7
 8
 9def write_temp(content):
10    """Helper: writes content to a temp file and returns its path."""
11    f = tempfile.NamedTemporaryFile(mode="w", suffix=".txt", delete=False)
12    f.write(content)
13    f.close()
14    return f.name
15
16
17class TestDoesTheBangaRang(unittest.TestCase):
18
19    def setUp(self):
20        self.temp = tempfile.NamedTemporaryFile(
21            mode="w", suffix=".txt", delete=False
22        )
23        self.temp.close()
24
25    def tearDown(self):
26        os.unlink(self.temp.name)
27
28    def write(self, content):
29        with open(self.temp.name, "w") as f:
30            f.write(content)
31
32    def test_two_words_form_bangaranga(self):
33        self.write("The banga is doing some ranga!")
34        self.assertEqual(does_the_banga_rang(self.temp.name), 2)
35
36    def test_three_words_form_bangaranga(self):
37        self.write("bang a small ranga")
38        self.assertEqual(does_the_banga_rang(self.temp.name), 3)
39
40    def test_one_word_is_bangaranga(self):
41        self.write("bangaranga")
42        self.assertEqual(does_the_banga_rang(self.temp.name), 1)
43
44    def test_multiple_solutions_returns_minimum(self):
45        self.write("bang a banga ranga bangaranga")
46        self.assertEqual(does_the_banga_rang(self.temp.name), 1)
47
48    def test_case_insensitive(self):
49        self.write("BANGA RANGA")
50        self.assertEqual(does_the_banga_rang(self.temp.name), 2)
51
52    def test_wrong_order_returns_zero(self):
53        self.write("ranga is banga")
54        self.assertEqual(does_the_banga_rang(self.temp.name), 0)
55
56    def test_partial_match_not_valid(self):
57        self.write("Does the banga rang?")
58        self.assertEqual(does_the_banga_rang(self.temp.name), 0)
59
60    def test_empty_file_returns_zero(self):
61        self.write("")
62        self.assertEqual(does_the_banga_rang(self.temp.name), 0)
63
64    def test_no_latin_letters_returns_zero(self):
65        self.write("123 !!! ???")
66        self.assertEqual(does_the_banga_rang(self.temp.name), 0)
67
68    def test_words_not_matching_bangaranga_prefix_returns_zero(self):
69        self.write("hello world foo bar")
70        self.assertEqual(does_the_banga_rang(self.temp.name), 0)
71
72    def test_nonexistent_file_raises_custom_error(self):
73        with self.assertRaises(TheBangaDoesNotRangError):
74            does_the_banga_rang("/nonexistent/path/to/file.txt")
75
76    def test_raises_custom_error_not_os_error(self):
77        with self.assertRaises(TheBangaDoesNotRangError):
78            does_the_banga_rang("/no/such/file.txt")
79        try:
80            does_the_banga_rang("/no/such/file.txt")
81        except OSError as e:
82            self.fail(f"Raw OSError was raised instead of TheBangaDoesNotRangError: {e}")
83        except TheBangaDoesNotRangError:
84            pass
85
86
87if __name__ == "__main__":
88    unittest.main()

Timed out.

Дискусия
История
Това решение има само една версия.