Coverage for finch/test_finch_input.py: 100%
84 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-05-12 11:24 -0400
« prev ^ index » next coverage.py v7.8.0, created at 2025-05-12 11:24 -0400
1import pytest
2import time
4from birdbrain_constant import BirdbrainConstant
5from birdbrain_exception import BirdbrainException
6from birdbrain_finch import BirdbrainFinch
7from birdbrain_finch_input import BirdbrainFinchInput
8from birdbrain_finch_output import BirdbrainFinchOutput
9from birdbrain_request import BirdbrainRequest
11def test_is_moving():
12 assert BirdbrainFinchOutput.move("B", BirdbrainConstant.FORWARD, 7, 5, False)
13 assert BirdbrainFinchInput.is_moving("B")
15 BirdbrainFinchOutput.wait("B")
17 assert BirdbrainFinchOutput.move("B", BirdbrainConstant.BACKWARD, 7, 5, True)
19 assert BirdbrainRequest.stop_all("B")
21 assert not BirdbrainFinchInput.is_moving("B")
23def test_light():
24 response = BirdbrainFinchInput.light("B", "L")
26 assert (0 <= response <= 100)
27 assert isinstance(response, int)
29 response = BirdbrainFinchInput.light("B", "R")
31 assert (0 <= response <= 100)
32 assert isinstance(response, int)
34 with pytest.raises(BirdbrainException) as e:
35 BirdbrainFinchInput.light("B", "BAD")
36 assert e.value.message == "Error: Request to device failed"
38 with pytest.raises(BirdbrainException) as e:
39 BirdbrainFinchInput.light("B", None)
40 assert e.value.message == "Error: Request to device failed"
42def test_distance():
43 response = BirdbrainFinchInput.distance("B")
45 assert (0 <= response <= 298)
46 assert isinstance(response, int)
48def test_line():
49 response = BirdbrainFinchInput.line("B", "L")
51 assert (0 <= response <= 100)
52 assert isinstance(response, int)
54 response = BirdbrainFinchInput.line("B", "R")
56 assert (0 <= response <= 100)
57 assert isinstance(response, int)
59 with pytest.raises(BirdbrainException) as e:
60 BirdbrainFinchInput.line("B", "BAD")
61 assert e.value.message == "Error: Request to device failed"
63 with pytest.raises(BirdbrainException) as e:
64 BirdbrainFinchInput.line("B", None)
65 assert e.value.message == "Error: Request to device failed"
67def test_encoder():
68 response = BirdbrainFinchInput.encoder("B", "L")
70 assert (-100.0 <= response <= 100.0)
71 assert isinstance(response, float)
73 response = BirdbrainFinchInput.encoder("B", "R")
75 assert (-100.0 <= response <= 100.0)
76 assert isinstance(response, float)
78 with pytest.raises(BirdbrainException) as e:
79 BirdbrainFinchInput.encoder("B", "BAD")
80 assert e.value.message == "Error: Request to device failed"
82 with pytest.raises(BirdbrainException) as e:
83 BirdbrainFinchInput.encoder("B", None)
84 assert e.value.message == "Error: Request to device failed"
86def test_acceleration():
87 response = BirdbrainFinchInput.acceleration("B")
89 assert (-100.0 <= response[0] <= 100.0)
90 assert (-100.0 <= response[1] <= 100.0)
91 assert (-100.0 <= response[2] <= 100.0)
93 assert isinstance(response[0], float)
94 assert isinstance(response[1], float)
95 assert isinstance(response[2], float)
97def test_compass():
98 response = BirdbrainFinchInput.compass("B")
100 assert (0 <= response <= 359)
101 assert isinstance(response, int)
103def test_magnetometer():
104 response = BirdbrainFinchInput.magnetometer("B")
106 assert (-180.0 <= response[0] <= 180.0)
107 assert (-180.0 <= response[1] <= 180.0)
108 assert (-180.0 <= response[2] <= 180.0)
110 assert isinstance(response[0], int)
111 assert isinstance(response[1], int)
112 assert isinstance(response[2], int)
114def test_orientation():
115 response = BirdbrainFinchInput.orientation("B")
117 some_position = False
118 for orientation in BirdbrainConstant.FINCH_ORIENTATION_RESULTS:
119 some_position = some_position or (orientation == response)
121 assert some_position