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 3mkdir tests 4New-Item tests/__init__.py 5 6"import unittest 7 8 9class TestMicrowave(unittest.TestCase): 10 11 def test_failure(self): 12 self.assertFalse(True) 13 14 15# Exceptions seen 16# AssertionError 17" | Out-File "tests/test_microwave.py" -Encoding UTF8 18 19"pytest" | Out-File requirements.txt -Encoding UTF8 20"pytest-watcher" >> requirements.txt 21uv add --requirement requirements.txt 22uv 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_timer_set_closed_door_pressed_start(self):
8 self.assertFalse(
9 src.microwave.microwave(
10 closed_door=True,
11 timer_set=True,
12 pressed_start=True,
13 too_hot=True,
14 )
15 )
16 self.assertTrue(
17 src.microwave.microwave(
18 closed_door=True,
19 timer_set=True,
20 pressed_start=True,
21 too_hot=False,
22 )
23 )
25 def test_too_hot_w_timer_set_closed_door_not_pressed_start(self):
26 self.assertFalse(
27 src.microwave.microwave(
28 closed_door=True,
29 timer_set=True,
30 pressed_start=False,
31 too_hot=True,
32 )
33 )
34 self.assertFalse(
35 src.microwave.microwave(
36 closed_door=True,
37 timer_set=True,
38 pressed_start=False,
39 too_hot=False,
40 )
41 )
43 def test_too_hot_w_not_timer_set_closed_door_pressed_start(self):
44 self.assertFalse(
45 src.microwave.microwave(
46 closed_door=True,
47 timer_set=False,
48 pressed_start=True,
49 too_hot=True,
50 )
51 )
52 self.assertFalse(
53 src.microwave.microwave(
54 closed_door=True,
55 timer_set=False,
56 pressed_start=True,
57 too_hot=False,
58 )
59 )
61 def test_too_hot_w_not_timer_set_closed_door_not_pressed_start(self):
62 self.assertFalse(
63 src.microwave.microwave(
64 closed_door=True,
65 timer_set=False,
66 pressed_start=False,
67 too_hot=True,
68 )
69 )
70 self.assertFalse(
71 src.microwave.microwave(
72 closed_door=True,
73 timer_set=False,
74 pressed_start=False,
75 too_hot=False,
76 )
77 )
79 def test_too_hot_w_timer_set_open_door_pressed_start(self):
80 self.assertFalse(
81 src.microwave.microwave(
82 closed_door=False,
83 timer_set=True,
84 pressed_start=True,
85 too_hot=True,
86 )
87 )
88 self.assertFalse(
89 src.microwave.microwave(
90 closed_door=False,
91 timer_set=True,
92 pressed_start=True,
93 too_hot=False,
94 )
95 )
97 def test_too_hot_w_timer_set_open_door_not_pressed_start(self):
98 self.assertFalse(
99 src.microwave.microwave(
100 closed_door=False,
101 timer_set=True,
102 pressed_start=False,
103 too_hot=True,
104 )
105 )
106 self.assertFalse(
107 src.microwave.microwave(
108 closed_door=False,
109 timer_set=True,
110 pressed_start=False,
111 too_hot=False,
112 )
113 )
115 def test_too_hot_w_not_timer_set_open_door_pressed_start(self):
116 self.assertFalse(
117 src.microwave.microwave(
118 closed_door=False,
119 timer_set=False,
120 pressed_start=True,
121 too_hot=True,
122 )
123 )
124 self.assertFalse(
125 src.microwave.microwave(
126 closed_door=False,
127 timer_set=False,
128 pressed_start=True,
129 too_hot=False,
130 )
131 )
133 def test_too_hot_w_not_timer_set_open_door_not_pressed_start(self):
134 self.assertFalse(
135 src.microwave.microwave(
136 closed_door=False,
137 timer_set=False,
138 pressed_start=False,
139 too_hot=True,
140 )
141 )
142 self.assertFalse(
143 src.microwave.microwave(
144 closed_door=False,
145 timer_set=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/__init__.py from Microwave
1def microwave(
2 closed_door=True, pressed_start=False,
3 timer_set=False, too_hot=False,
4 ):
5 return (
6 closed_door
7 and timer_set
8 and not too_hot
9 and pressed_start
10 )