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

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

2 точки общо

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

 1import os
 2import tempfile
 3import unittest
 4
 5from bangaranga import does_the_banga_rang, TheBangaDoesNotRangError
 6
 7
 8class DoesTheBangaRangTests(unittest.TestCase):
 9    def create_temp_file(self, content):
10        temp = tempfile.NamedTemporaryFile(mode="w", delete=False)
11        self.addCleanup(lambda: os.remove(temp.name) if os.path.exists(temp.name) else None)
12
13        temp.write(content)
14        temp.close()
15
16        return temp.name
17
18    def test_returns_minimum_number_of_words(self):
19        filename = self.create_temp_file(
20            "bang a banga ranga bangaranga"
21        )
22
23        self.assertEqual(1, does_the_banga_rang(filename))
24
25    def test_finds_bangaranga_from_two_words(self):
26        filename = self.create_temp_file(
27            "The banga is doing some ranga!"
28        )
29
30        self.assertEqual(2, does_the_banga_rang(filename))
31
32    def test_finds_bangaranga_from_multiple_words(self):
33        filename = self.create_temp_file(
34            "bang a small ranga"
35        )
36
37        self.assertEqual(3, does_the_banga_rang(filename))
38
39    def test_returns_zero_when_words_are_in_wrong_order(self):
40        filename = self.create_temp_file(
41            "ranga before banga"
42        )
43
44        self.assertEqual(0, does_the_banga_rang(filename))
45
46    def test_returns_zero_when_bangaranga_cannot_be_formed(self):
47        filename = self.create_temp_file(
48            "Does the banga rang?"
49        )
50
51        self.assertEqual(0, does_the_banga_rang(filename))
52
53    def test_search_is_case_insensitive(self):
54        filename = self.create_temp_file(
55            "BaNgA RANGA"
56        )
57
58        self.assertEqual(2, does_the_banga_rang(filename))
59
60    def test_uses_only_whole_words(self):
61        filename = self.create_temp_file(
62            "xxbangayy rangazz"
63        )
64
65        self.assertEqual(0, does_the_banga_rang(filename))
66
67    def test_words_can_be_separated_by_non_word_content(self):
68        filename = self.create_temp_file(
69            "bang...a!!!ranga"
70        )
71
72        self.assertEqual(3, does_the_banga_rang(filename))
73
74    def test_raises_custom_error_when_file_cannot_be_read(self):
75        with self.assertRaises(TheBangaDoesNotRangError):
76            does_the_banga_rang("missing_file.txt")
77
78if __name__ == "__main__":
79    unittest.main()

..........
----------------------------------------------------------------------
Ran 10 tests in 0.059s

OK

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