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