Microwave: tests and solutions
makePythonTdd Microwave
The code in makePythonTdd.sh from Microwave
1#!/bin/bash 2uv init microwave 3cd microwave 4mkdir tests 5touch tests/__init__.py 6 7echo "import unittest 8 9 10class TestMicrowave(unittest.TestCase): 11 12 def test_failure(self): 13 self.assertFalse(True) 14 15 16# Exceptions seen 17# AssertionError 18" > tests/test_microwave.py 19 20echo "pytest" > requirements.txt 21echo "pytest-watcher" >> requirements.txt 22uv add --requirement requirements.txt 23uv run pytest-watcher . --now
The code in makePythonTdd.ps1 from Microwave
1uv init microwave 2cd microwave 3New-Item "src/microwave.py" 4mkdir tests 5New-Item tests/__init__.py 6 7"import unittest 8 9 10class TestMicrowave(unittest.TestCase): 11 12 def test_failure(self): 13 self.assertFalse(True) 14 15 16# Exceptions seen 17# AssertionError 18" | Out-File "tests/test_microwave.py" -Encoding UTF8 19 20"pytest" | Out-File requirements.txt -Encoding UTF8 21"pytest-watcher" >> requirements.txt 22uv add --requirement requirements.txt 23uv run pytest-watcher . --now
Microwave: tests
The code in microwave/tests/test_microwave.py from Microwave
1import src.microwave
2import unittest
3
4
5class TestMicrowave(unittest.TestCase):
6
7 def test_too_hot_w_set_timer_closed_door_pressed_start(self):
8 self.assertFalse(
9 src.microwave.microwave(
10 closed_door=True,
11 set_timer=True,
12 pressed_start=True,
13 too_hot=True,
14 )
15 )
16 self.assertTrue(
17 src.microwave.microwave(
18 closed_door=True,
19 set_timer=True,
20 pressed_start=True,
21 too_hot=False,
22 )
23 )
25 def test_too_hot_w_set_timer_closed_door_not_pressed_start(self):
26 self.assertFalse(
27 src.microwave.microwave(
28 closed_door=True,
29 set_timer=True,
30 pressed_start=False,
31 too_hot=True,
32 )
33 )
34 self.assertFalse(
35 src.microwave.microwave(
36 closed_door=True,
37 set_timer=True,
38 pressed_start=False,
39 too_hot=False,
40 )
41 )
43 def test_too_hot_w_not_set_timer_closed_door_pressed_start(self):
44 self.assertFalse(
45 src.microwave.microwave(
46 closed_door=True,
47 set_timer=False,
48 pressed_start=True,
49 too_hot=True,
50 )
51 )
52 self.assertFalse(
53 src.microwave.microwave(
54 closed_door=True,
55 set_timer=False,
56 pressed_start=True,
57 too_hot=False,
58 )
59 )
61 def test_too_hot_w_not_set_timer_closed_door_not_pressed_start(self):
62 self.assertFalse(
63 src.microwave.microwave(
64 closed_door=True,
65 set_timer=False,
66 pressed_start=False,
67 too_hot=True,
68 )
69 )
70 self.assertFalse(
71 src.microwave.microwave(
72 closed_door=True,
73 set_timer=False,
74 pressed_start=False,
75 too_hot=False,
76 )
77 )
79 def test_too_hot_w_set_timer_open_door_pressed_start(self):
80 self.assertFalse(
81 src.microwave.microwave(
82 closed_door=False,
83 set_timer=True,
84 pressed_start=True,
85 too_hot=True,
86 )
87 )
88 self.assertFalse(
89 src.microwave.microwave(
90 closed_door=False,
91 set_timer=True,
92 pressed_start=True,
93 too_hot=False,
94 )
95 )
97 def test_too_hot_w_set_timer_open_door_not_pressed_start(self):
98 self.assertFalse(
99 src.microwave.microwave(
100 closed_door=False,
101 set_timer=True,
102 pressed_start=False,
103 too_hot=True,
104 )
105 )
106 self.assertFalse(
107 src.microwave.microwave(
108 closed_door=False,
109 set_timer=True,
110 pressed_start=False,
111 too_hot=False,
112 )
113 )
115 def test_too_hot_w_not_set_timer_open_door_pressed_start(self):
116 self.assertFalse(
117 src.microwave.microwave(
118 closed_door=False,
119 set_timer=False,
120 pressed_start=True,
121 too_hot=True,
122 )
123 )
124 self.assertFalse(
125 src.microwave.microwave(
126 closed_door=False,
127 set_timer=False,
128 pressed_start=True,
129 too_hot=False,
130 )
131 )
133 def test_too_hot_w_not_set_timer_open_door_not_pressed_start(self):
134 self.assertFalse(
135 src.microwave.microwave(
136 closed_door=False,
137 set_timer=False,
138 pressed_start=False,
139 too_hot=True,
140 )
141 )
142 self.assertFalse(
143 src.microwave.microwave(
144 closed_door=False,
145 set_timer=False,
146 pressed_start=False,
147 too_hot=False,
148 )
149 )
150
151
152# Exceptions seen
153# AssertionError
154# NameError
155# AttributeError
156# TypeError
157# SyntaxError
Microwave: solution
The code in microwave/src/microwave.py from Microwave
1def microwave(
2 closed_door=False, pressed_start=False,
3 set_timer=False, too_hot=False,
4 ):
5 return (
6 closed_door
7 and set_timer
8 and not too_hot
9 and pressed_start
10 )