Coverage for hummingbird/test_hummingbird.py: 99%
126 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_hummingbird import BirdbrainHummingbird
7from birdbrain_microbit import BirdbrainMicrobit
9def test_connect_device_name_as_none():
10 with pytest.raises(BirdbrainException) as e:
11 hummingbird = BirdbrainHummingbird(None)
12 assert e.value.message == "Missing device name"
14def test_connect_bad_device_name():
15 with pytest.raises(BirdbrainException) as e:
16 hummingbird = BirdbrainHummingbird('D')
17 assert e.value.message == "Invalid device name: D"
19def test_connect_valid_device_name():
20 hummingbird = BirdbrainHummingbird("A")
22 assert hummingbird.device == "A"
24def test_is():
25 hummingbird = BirdbrainHummingbird("A")
27 assert hummingbird.is_connected()
28 assert not hummingbird.is_microbit()
29 assert hummingbird.is_hummingbird()
30 assert not hummingbird.is_finch()
32 assert hummingbird.isConnectionValid()
33 assert not hummingbird.isMicrobit()
34 assert hummingbird.isHummingbird()
35 assert not hummingbird.isFinch()
37def test_led_with_alias():
38 hummingbird = BirdbrainHummingbird("A")
40 assert hummingbird.led(1, 100)
41 time.sleep(0.15)
43 assert hummingbird.led(1, 0)
44 time.sleep(0.15)
46 assert hummingbird.led(1, 50)
47 time.sleep(0.15)
49 hummingbird.setLED(1, 0)
51def test_led_no_connection():
52 with pytest.raises(BirdbrainException) as e:
53 hummingbird = BirdbrainHummingbird('C')
55 hummingbird.led(1, 100)
56 assert e.value.message == "No connection: C"
58def test_tri_led_with_alias():
59 hummingbird = BirdbrainHummingbird("A")
61 assert hummingbird.tri_led(1, 50, "50", 0)
62 time.sleep(0.15)
64 assert hummingbird.setTriLED(1, 100, "0", "0")
65 time.sleep(0.15)
67 assert hummingbird.tri_led(1, 0, "0", "0")
68 time.sleep(0.15)
70def test_position_servo_with_alias():
71 hummingbird = BirdbrainHummingbird("A")
73 assert hummingbird.position_servo(1, 50)
74 time.sleep(0.15)
76 assert hummingbird.setPositionServo(1, "130")
78def test_rotation_servo_with_alias():
79 hummingbird = BirdbrainHummingbird("A")
81 assert hummingbird.rotation_servo(2, 50)
82 time.sleep(0.15)
84 assert hummingbird.setRotationServo(2, "-50")
85 time.sleep(0.15)
87 assert hummingbird.rotation_servo(2, 100)
88 time.sleep(0.15)
90 assert hummingbird.setRotationServo(2, -100)
91 time.sleep(0.15)
93 assert hummingbird.setRotationServo(2, 0)
95def test_orientation_with_alias():
96 hummingbird = BirdbrainHummingbird("A")
98 response = hummingbird.orientation()
99 response = hummingbird.getOrientation()
101 some_position = False
102 for orientation in BirdbrainConstant.HUMMINGBIRD_ORIENTATION_RESULTS:
103 some_position = some_position or (orientation == response)
105 assert some_position
107def test_sensor():
108 hummingbird = BirdbrainHummingbird("A")
110 response = hummingbird.sensor(1)
111 response = hummingbird.getSensor(1)
113 assert isinstance(response, float)
115def test_light_with_alias():
116 hummingbird = BirdbrainHummingbird("A")
118 response = hummingbird.light(3)
119 response = hummingbird.getLight(3)
120 response = hummingbird.light("3")
122 assert (0 <= response <= 100)
123 assert isinstance(response, int)
125 with pytest.raises(BirdbrainException) as e:
126 response = hummingbird.light(4)
127 assert e.value.message == "Error: The device is not connected"
129def test_sound_with_alias():
130 hummingbird = BirdbrainHummingbird("A")
132 response = hummingbird.sound(3)
133 response = hummingbird.getSound(3)
134 response = hummingbird.sound("3")
136 assert (0 <= response <= 100)
137 assert isinstance(response, int)
139 with pytest.raises(BirdbrainException) as e:
140 response = hummingbird.sound(4)
141 assert e.value.message == "Error: The device is not connected"
143def test_sound_microbit():
144 hummingbird = BirdbrainHummingbird("A")
146 response = hummingbird.sound("micro:bit")
148 assert (0 <= response <= 100)
149 assert isinstance(response, int)
151def test_distance_with_alias():
152 hummingbird = BirdbrainHummingbird("A")
154 response = hummingbird.distance(2)
155 response = hummingbird.getDistance(2)
156 response = hummingbird.distance("2")
158 assert (0 <= response <= 298)
159 assert isinstance(response, int)
161def test_dial_with_alias():
162 hummingbird = BirdbrainHummingbird("A")
164 response = hummingbird.dial(1)
165 response = hummingbird.getDial(1)
166 response = hummingbird.dial("1")
168 assert (0 <= response <= 100)
169 assert isinstance(response, int)
171def test_voltage_with_alias():
172 hummingbird = BirdbrainHummingbird("A")
174 response = hummingbird.voltage(1)
175 response = hummingbird.getVoltage(1)
177 assert isinstance(response, float)
179def test_stop_all():
180 hummingbird = BirdbrainHummingbird("A")
182 hummingbird.stop_all()
183 hummingbird.stopAll()