1from bangaranga import does_the_banga_rang, TheBangaDoesNotRangError
2import unittest
3from unittest.mock import patch, mock_open
4
5class TestBangaranga(unittest.TestCase):
6
7 def test_bangaranga_returns_0(self):
8 with patch("builtins.open", mock_open(read_data="pls dont fail")):
9 self.assertEqual(does_the_banga_rang("test.txt"), 0)
10
11 def test_bangaranga_empty_file(self):
12 with patch("builtins.open", mock_open(read_data="")):
13 self.assertEqual(does_the_banga_rang("test.txt"), 0)
14
15 def test_bangaranga_digits(self):
16 with patch("builtins.open", mock_open(read_data="bang a123 ranga")):
17 self.assertEqual(does_the_banga_rang("test.txt"), 0)
18
19 def test_bangaranga_underscore(self):
20 with patch("builtins.open", mock_open(read_data="banga_ranga")):
21 self.assertEqual(does_the_banga_rang("test.txt"), 0)
22
23 def test_bangaranga_punctuation(self):
24 with patch("builtins.open", mock_open(read_data="bang!?a.rang,a")):
25 self.assertEqual(does_the_banga_rang("test.txt"), 4)
26
27 def test_bangaranga_correct_order(self):
28 with patch("builtins.open", mock_open(read_data="rang a the banga")):
29 self.assertEqual(does_the_banga_rang("test.txt"), 0)
30
31 def test_bangaranga_OSError(self):
32 with patch("builtins.open", side_effect=OSError):
33 with self.assertRaises(TheBangaDoesNotRangError):
34 does_the_banga_rang("test.txt")
35
36 def test_bangaranga_IOError(self):
37 with patch("builtins.open", side_effect=IOError):
38 with self.assertRaises(TheBangaDoesNotRangError):
39 does_the_banga_rang("test.txt")
40
41 def test_bangaranga_simple_case(self):
42 with patch("builtins.open", mock_open(read_data="banga ranga")):
43 self.assertEqual(does_the_banga_rang("test.txt"), 2)
44
45 def test_bangaranga_noisy_input(self):
46 with patch("builtins.open", mock_open(read_data="? the banga ! the ranga ga!")):
47 self.assertEqual(does_the_banga_rang("test.txt"), 2)
48
49 def test_bangaranga_case_insensitive(self):
50 with patch("builtins.open", mock_open(read_data="BAngar AnGa")):
51 self.assertEqual(does_the_banga_rang("test.txt"), 2)
52
53 def test_bangaranga_minimum_count(self):
54 with patch("builtins.open", mock_open(read_data="bang a banga ranga bangaranga")):
55 self.assertEqual(does_the_banga_rang("test.txt"), 1)
56
57
58if __name__ == "__main__":
59 unittest.main()
..........
----------------------------------------------------------------------
Ran 10 tests in 0.281s
OK
Виктор Бечев
31.05.2026 18:07Като изключим подредбата на импортите - нямам забележки.
|