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

car/tests/test_car.py
 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        )
car/tests/test_car.py
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        )
car/tests/test_car.py
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        )
car/tests/test_car.py
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        )
car/tests/test_car.py
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        )
car/tests/test_car.py
 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        )
car/tests/test_car.py
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        )
car/tests/test_car.py
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

car/src/car.py
 1def ignition(
 2        start_is_pressed, key_is_close=False,
 3        brake_is_pressed=False, in_park=False,
 4    ):
 5    if (
 6        start_is_pressed
 7        and key_is_close
 8        and brake_is_pressed
 9    ):
10        return in_park
11    return False