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

1import pytest 

2import time 

3 

4from birdbrain_constant import BirdbrainConstant 

5from birdbrain_exception import BirdbrainException 

6from birdbrain_hummingbird import BirdbrainHummingbird 

7from birdbrain_microbit import BirdbrainMicrobit 

8 

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" 

13 

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" 

18 

19def test_connect_valid_device_name(): 

20 hummingbird = BirdbrainHummingbird("A") 

21 

22 assert hummingbird.device == "A" 

23 

24def test_is(): 

25 hummingbird = BirdbrainHummingbird("A") 

26 

27 assert hummingbird.is_connected() 

28 assert not hummingbird.is_microbit() 

29 assert hummingbird.is_hummingbird() 

30 assert not hummingbird.is_finch() 

31 

32 assert hummingbird.isConnectionValid() 

33 assert not hummingbird.isMicrobit() 

34 assert hummingbird.isHummingbird() 

35 assert not hummingbird.isFinch() 

36 

37def test_led_with_alias(): 

38 hummingbird = BirdbrainHummingbird("A") 

39 

40 assert hummingbird.led(1, 100) 

41 time.sleep(0.15) 

42 

43 assert hummingbird.led(1, 0) 

44 time.sleep(0.15) 

45 

46 assert hummingbird.led(1, 50) 

47 time.sleep(0.15) 

48 

49 hummingbird.setLED(1, 0) 

50 

51def test_led_no_connection(): 

52 with pytest.raises(BirdbrainException) as e: 

53 hummingbird = BirdbrainHummingbird('C') 

54 

55 hummingbird.led(1, 100) 

56 assert e.value.message == "No connection: C" 

57 

58def test_tri_led_with_alias(): 

59 hummingbird = BirdbrainHummingbird("A") 

60 

61 assert hummingbird.tri_led(1, 50, "50", 0) 

62 time.sleep(0.15) 

63 

64 assert hummingbird.setTriLED(1, 100, "0", "0") 

65 time.sleep(0.15) 

66 

67 assert hummingbird.tri_led(1, 0, "0", "0") 

68 time.sleep(0.15) 

69 

70def test_position_servo_with_alias(): 

71 hummingbird = BirdbrainHummingbird("A") 

72 

73 assert hummingbird.position_servo(1, 50) 

74 time.sleep(0.15) 

75 

76 assert hummingbird.setPositionServo(1, "130") 

77 

78def test_rotation_servo_with_alias(): 

79 hummingbird = BirdbrainHummingbird("A") 

80 

81 assert hummingbird.rotation_servo(2, 50) 

82 time.sleep(0.15) 

83 

84 assert hummingbird.setRotationServo(2, "-50") 

85 time.sleep(0.15) 

86 

87 assert hummingbird.rotation_servo(2, 100) 

88 time.sleep(0.15) 

89 

90 assert hummingbird.setRotationServo(2, -100) 

91 time.sleep(0.15) 

92 

93 assert hummingbird.setRotationServo(2, 0) 

94 

95def test_orientation_with_alias(): 

96 hummingbird = BirdbrainHummingbird("A") 

97 

98 response = hummingbird.orientation() 

99 response = hummingbird.getOrientation() 

100 

101 some_position = False 

102 for orientation in BirdbrainConstant.HUMMINGBIRD_ORIENTATION_RESULTS: 

103 some_position = some_position or (orientation == response) 

104 

105 assert some_position 

106 

107def test_sensor(): 

108 hummingbird = BirdbrainHummingbird("A") 

109 

110 response = hummingbird.sensor(1) 

111 response = hummingbird.getSensor(1) 

112 

113 assert isinstance(response, float) 

114 

115def test_light_with_alias(): 

116 hummingbird = BirdbrainHummingbird("A") 

117 

118 response = hummingbird.light(3) 

119 response = hummingbird.getLight(3) 

120 response = hummingbird.light("3") 

121 

122 assert (0 <= response <= 100) 

123 assert isinstance(response, int) 

124 

125 with pytest.raises(BirdbrainException) as e: 

126 response = hummingbird.light(4) 

127 assert e.value.message == "Error: The device is not connected" 

128 

129def test_sound_with_alias(): 

130 hummingbird = BirdbrainHummingbird("A") 

131 

132 response = hummingbird.sound(3) 

133 response = hummingbird.getSound(3) 

134 response = hummingbird.sound("3") 

135 

136 assert (0 <= response <= 100) 

137 assert isinstance(response, int) 

138 

139 with pytest.raises(BirdbrainException) as e: 

140 response = hummingbird.sound(4) 

141 assert e.value.message == "Error: The device is not connected" 

142 

143def test_sound_microbit(): 

144 hummingbird = BirdbrainHummingbird("A") 

145 

146 response = hummingbird.sound("micro:bit") 

147 

148 assert (0 <= response <= 100) 

149 assert isinstance(response, int) 

150 

151def test_distance_with_alias(): 

152 hummingbird = BirdbrainHummingbird("A") 

153 

154 response = hummingbird.distance(2) 

155 response = hummingbird.getDistance(2) 

156 response = hummingbird.distance("2") 

157 

158 assert (0 <= response <= 298) 

159 assert isinstance(response, int) 

160 

161def test_dial_with_alias(): 

162 hummingbird = BirdbrainHummingbird("A") 

163 

164 response = hummingbird.dial(1) 

165 response = hummingbird.getDial(1) 

166 response = hummingbird.dial("1") 

167 

168 assert (0 <= response <= 100) 

169 assert isinstance(response, int) 

170 

171def test_voltage_with_alias(): 

172 hummingbird = BirdbrainHummingbird("A") 

173 

174 response = hummingbird.voltage(1) 

175 response = hummingbird.getVoltage(1) 

176 

177 assert isinstance(response, float) 

178 

179def test_stop_all(): 

180 hummingbird = BirdbrainHummingbird("A") 

181 

182 hummingbird.stop_all() 

183 hummingbird.stopAll()