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

microwave/tests/test_microwave.py
 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        )
microwave/tests/test_microwave.py
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        )
microwave/tests/test_microwave.py
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        )
microwave/tests/test_microwave.py
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        )
microwave/tests/test_microwave.py
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        )
microwave/tests/test_microwave.py
 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        )
microwave/tests/test_microwave.py
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        )
microwave/tests/test_microwave.py
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    )