1import unittest
2
3import solution
4
5
6class TestSanity(unittest.TestCase):
7 """Check if all data is present."""
8
9 def test_requirements(self):
10 names = [
11 "costadines_requirements",
12 "victors_requirements",
13 "joans_requirements",
14 "unique_requirements",
15 "shopping_quantities",
16 "total_items_to_buy",
17 ]
18 unimported = [name for name in names if name not in dir(solution)]
19 self.assertEqual(
20 unimported, [], "\n\nЕлементите по-горе липсват (проверете си имената)!"
21 )
22
23
24if __name__ == "__main__":
25 unittest.main()
1import unittest
2
3from solution import *
4
5
6class TestPreparation(unittest.TestCase):
7 """Test that all the neccessary preparations for the occasion are in place."""
8
9 def test_costadines_requirements(self):
10 """Costadine's requirements should match the recipe."""
11 self.assertEqual(
12 costadines_requirements,
13 (
14 "вино",
15 "презервативи",
16 "струни за китара",
17 "презервативи",
18 "перце за китара",
19 "презервативи",
20 "пица",
21 "бонбони",
22 "презервативи",
23 ),
24 )
25
26 def test_victors_requirements(self):
27 """Victor's requirements should match the recipe."""
28 self.assertEqual(
29 victors_requirements,
30 [
31 "вино",
32 "баница",
33 "цяло пиле",
34 "туршия",
35 "кисело зеле",
36 "зехтин",
37 "картофи",
38 "вино",
39 "кисели краставички",
40 "яйца",
41 ],
42 )
43
44 def test_costadines_requirements_type(self):
45 """Victor's requirements should be in a list."""
46 self.assertIsInstance(costadines_requirements, tuple)
47
48 def test_victors_requirements_type(self):
49 """Victor's requirements should be in a tuple."""
50 self.assertIsInstance(victors_requirements, list)
51
52 def test_joans_requirements(self):
53 """Joan's requirements should be a combination of both lists above and then some."""
54 self.assertEqual(
55 joans_requirements,
56 [
57 "вино",
58 "презервативи",
59 "струни за китара",
60 "презервативи",
61 "перце за китара",
62 "презервативи",
63 "пица",
64 "бонбони",
65 "презервативи",
66 "вино",
67 "баница",
68 "цяло пиле",
69 "туршия",
70 "кисело зеле",
71 "зехтин",
72 "картофи",
73 "вино",
74 "кисели краставички",
75 "яйца",
76 "лубрикант",
77 "хавлия",
78 "маска на кон",
79 ],
80 )
81
82 def test_unique_requirements(self):
83 """The unique requirement list should contain all unique requirements."""
84 # Make a more roundabout comparison, so that it's indepentent
85 # from the type of unique_requirements
86 expected_requirements = {
87 "кисели краставички",
88 "зехтин",
89 "пица",
90 "струни за китара",
91 "кисело зеле",
92 "вино",
93 "картофи",
94 "презервативи",
95 "баница",
96 "цяло пиле",
97 "лубрикант",
98 "бонбони",
99 "туршия",
100 "яйца",
101 "маска на кон",
102 "хавлия",
103 "перце за китара",
104 }
105 for item in expected_requirements:
106 self.assertIn(item, unique_requirements)
107 self.assertEqual(len(expected_requirements), len(unique_requirements))
108
109 def test_shopping_quantities(self):
110 """All requirements should have a quantity of 5, except for skyr (1)."""
111 self.assertEqual(
112 shopping_quantities,
113 {
114 "бонбони": 5,
115 "презервативи": 5,
116 "баница": 5,
117 "хавлия": 5,
118 "перце за китара": 5,
119 "пица": 5,
120 "лубрикант": 5,
121 "струни за китара": 5,
122 "зехтин": 5,
123 "вино": 5,
124 "картофи": 5,
125 "кисело зеле": 5,
126 "яйца": 5,
127 "маска на кон": 5,
128 "цяло пиле": 5,
129 "кисели краставички": 5,
130 "туршия": 5,
131 "skyr": 1,
132 },
133 )
134
135 def test_number_of_requirements_to_buy(self):
136 """The number of requirements to buy should be 18."""
137 # Extended a bit, due to a little ambiguity
138 self.assertIn(total_items_to_buy, (18, 86, 90))
139
140
141if __name__ == "__main__":
142 unittest.main()
Гергана Панделиева
28.02.2026 08:31Най накрая като общ брой ли трябваше да са принтира, тоест: print(total_items_to_buy*5 - 4) или само броя на видовете неща, които ще се пазаруват
| |||
Боян Байданов
26.02.2026 22:24Само на мен ли ми се струва че в описанието на условието и python имплементацията има разминаване?
Първо на Костадин се иска да може да му се променя списъка, след това се иска да е кортеж. Съответно и при Виктор така. На кое условие да вярвам???
Нишка
| |||
Панайот Пощов
26.02.2026 08:28Бихте ли, моля, споделили как да предаваме предизвикателства? Уви, често не мога да посещавам лекции/практика, защото работя. Благодаря Ви.
Нишка
|
Нишка
02.03.2026 12:43