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