Coverage for finch/test_finch.py: 99%
135 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-04 20:20 -0500
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-04 20:20 -0500
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_request import BirdbrainRequest
10def test_is():
11 finch = BirdbrainFinch.connect("B")
13 assert finch.is_connected()
14 assert not finch.is_microbit()
15 assert not finch.is_hummingbird()
16 assert finch.is_finch()
18 assert finch.isConnectionValid()
19 assert not finch.isMicrobit()
20 assert not finch.isHummingbird()
21 assert finch.isFinch()
23def test_beak_with_alias():
24 finch = BirdbrainFinch('B')
26 finch.beak(100, 50, 50)
27 time.sleep(0.15)
28 finch.setBeak(0, 0, 0)
30def test_tail_with_alias():
31 finch = BirdbrainFinch("B")
33 assert finch.tail(1, 10, 0, 50)
34 time.sleep(0.1)
35 assert finch.tail(1, "50", 0, "0")
36 time.sleep(0.1)
37 assert finch.tail("2", "50", 0, "0")
38 time.sleep(0.1)
39 assert finch.tail(3, "50", 0, "0")
40 time.sleep(0.1)
41 assert finch.tail(4, "50", 0, "0")
42 time.sleep(0.1)
43 assert finch.tail("all", 100, 0, 100)
44 time.sleep(0.1)
45 assert finch.setTail("all", 0, 0, 0)
47def test_move_with_alias():
48 finch = BirdbrainFinch("B")
50 assert finch.move(BirdbrainConstant.FORWARD, 4, 20)
51 assert finch.move(BirdbrainConstant.FORWARD, "4", "20")
52 assert finch.move(BirdbrainConstant.BACKWARD, 4, 20)
53 assert finch.setMove(BirdbrainConstant.BACKWARD, "4", "20")
55 with pytest.raises(BirdbrainException) as e:
56 finch = BirdbrainFinch("B")
58 assert finch.move(None, 4, 20)
59 assert e.value.message == "Error: Request to device failed"
61 with pytest.raises(BirdbrainException) as e:
62 finch = BirdbrainFinch("B")
64 assert finch.move("BAD", 4, 20)
65 assert e.value.message == "Error: Request to device failed"
67def test_is_moving():
68 finch = BirdbrainFinch("B")
70 assert finch.move(BirdbrainConstant.FORWARD, 7, 5, False)
71 assert finch.is_moving()
73 assert finch.wait("B")
75 assert finch.move(BirdbrainConstant.BACKWARD, 7, 5, True)
77 finch.stop_all()
79 time.sleep(1)
81 assert not finch.is_moving()
83def test_turn_with_alias():
84 finch = BirdbrainFinch("B")
86 finch.turn("L", 45, 50)
87 finch.turn("R", 45, 50)
88 finch.turn("L", "45", 50)
89 finch.setTurn("R", 45, "50")
91def test_motors_with_alias():
92 finch = BirdbrainFinch("B")
94 assert finch.motors(25, 0)
95 time.sleep(0.2)
96 assert finch.motors(-25, 0)
97 time.sleep(0.2)
99 assert finch.motors(0, -25)
100 time.sleep(0.2)
101 assert finch.motors("0", "25")
102 time.sleep(0.2)
104 BirdbrainRequest.stop_all("B")
106 BirdbrainRequest.stop_all("B")
108def test_stop():
109 finch = BirdbrainFinch("B")
111 assert finch.move(BirdbrainConstant.FORWARD, 99999, 5, False)
112 time.sleep(0.2)
113 assert finch.stop()
115 assert finch.move(BirdbrainConstant.BACKWARD, 99999, 5, False)
116 time.sleep(0.2)
117 assert finch.stop()
119def test_reset_encoders():
120 finch = BirdbrainFinch("B")
122 assert finch.reset_encoders()
123 assert finch.resetEncoders()
125def test_light_with_alias():
126 finch = BirdbrainFinch("B")
128 assert (0 <= finch.light("L") <= 100)
129 assert isinstance(finch.getLight("L"), int)
131 assert (0 <= finch.light("R") <= 100)
132 assert isinstance(finch.getLight("R"), int)
134 with pytest.raises(BirdbrainException) as e:
135 finch.light("BAD")
136 assert e.value.message == "Error: Request to device failed"
138def test_distance_with_alias():
139 finch = BirdbrainFinch("B")
141 response = finch.distance()
142 response = finch.getDistance()
144 assert (0 <= response <= 298)
145 assert isinstance(response, int)
147def test_line_with_alias():
148 finch = BirdbrainFinch("B")
150 assert (0 <= finch.line("L") <= 100)
151 assert isinstance(finch.getLine("L"), int)
153 assert (0 <= finch.line("R") <= 100)
154 assert isinstance(finch.getLine("R"), int)
156 with pytest.raises(BirdbrainException) as e:
157 finch.line("BAD")
158 assert e.value.message == "Error: Request to device failed"
160def test_encoder_with_alias():
161 finch = BirdbrainFinch("B")
163 assert (-100.0 <= finch.encoder("L") <= 100.0)
164 assert isinstance(finch.getEncoder("L"), float)
166 assert (-100.0 <= finch.encoder("R") <= 100.0)
167 assert isinstance(finch.getEncoder("R"), float)
169 with pytest.raises(BirdbrainException) as e:
170 finch.encoder("BAD")
171 assert e.value.message == "Error: Request to device failed"
173def test_orientation_with_alias():
174 finch = BirdbrainFinch("B")
176 response = finch.orientation()
177 response = finch.getOrientation()
179 some_position = False
180 for orientation in BirdbrainConstant.FINCH_ORIENTATION_RESULTS:
181 some_position = some_position or (orientation == response)
183 assert some_position
185def test_stop_all():
186 finch = BirdbrainFinch("B")
188 finch.stop_all()
189 finch.stopAll()