Coverage for finch/test_finch.py: 99%

135 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-05-21 08:37 -0400

1import pytest 

2import time 

3 

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 

9 

10def test_is(): 

11 finch = BirdbrainFinch.connect("B") 

12 

13 assert finch.is_connected() 

14 assert finch.is_microbit() 

15 assert not finch.is_hummingbird() 

16 assert finch.is_finch() 

17 

18 assert finch.isConnectionValid() 

19 assert finch.isMicrobit() 

20 assert not finch.isHummingbird() 

21 assert finch.isFinch() 

22 

23def test_beak_with_alias(): 

24 finch = BirdbrainFinch('B') 

25 

26 finch.beak(100, 50, 50) 

27 time.sleep(0.15) 

28 finch.setBeak(0, 0, 0) 

29 

30def test_tail_with_alias(): 

31 finch = BirdbrainFinch("B") 

32 

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) 

46 

47def test_move_with_alias(): 

48 finch = BirdbrainFinch("B") 

49 

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") 

54 

55 with pytest.raises(BirdbrainException) as e: 

56 finch = BirdbrainFinch("B") 

57 

58 assert finch.move(None, 4, 20) 

59 assert e.value.message == "Error: Request to device failed" 

60 

61 with pytest.raises(BirdbrainException) as e: 

62 finch = BirdbrainFinch("B") 

63 

64 assert finch.move("BAD", 4, 20) 

65 assert e.value.message == "Error: Request to device failed" 

66 

67def test_is_moving(): 

68 finch = BirdbrainFinch("B") 

69 

70 assert finch.move(BirdbrainConstant.FORWARD, 7, 5, False) 

71 assert finch.is_moving() 

72 

73 assert finch.wait("B") 

74 

75 assert finch.move(BirdbrainConstant.BACKWARD, 7, 5, True) 

76 

77 finch.stop_all() 

78 

79 time.sleep(1) 

80 

81 assert not finch.is_moving() 

82 

83def test_turn_with_alias(): 

84 finch = BirdbrainFinch("B") 

85 

86 finch.turn("L", 45, 50) 

87 finch.turn("R", 45, 50) 

88 finch.turn("L", "45", 50) 

89 finch.setTurn("R", 45, "50") 

90 

91def test_motors_with_alias(): 

92 finch = BirdbrainFinch("B") 

93 

94 assert finch.motors(25, 0) 

95 time.sleep(0.2) 

96 assert finch.motors(-25, 0) 

97 time.sleep(0.2) 

98 

99 assert finch.motors(0, -25) 

100 time.sleep(0.2) 

101 assert finch.motors("0", "25") 

102 time.sleep(0.2) 

103 

104 BirdbrainRequest.stop_all("B") 

105 

106 BirdbrainRequest.stop_all("B") 

107 

108def test_stop(): 

109 finch = BirdbrainFinch("B") 

110 

111 assert finch.move(BirdbrainConstant.FORWARD, 99999, 5, False) 

112 time.sleep(0.2) 

113 assert finch.stop() 

114 

115 assert finch.move(BirdbrainConstant.BACKWARD, 99999, 5, False) 

116 time.sleep(0.2) 

117 assert finch.stop() 

118 

119def test_reset_encoders(): 

120 finch = BirdbrainFinch("B") 

121 

122 assert finch.reset_encoders() 

123 assert finch.resetEncoders() 

124 

125def test_light_with_alias(): 

126 finch = BirdbrainFinch("B") 

127 

128 assert (0 <= finch.light("L") <= 100) 

129 assert isinstance(finch.getLight("L"), int) 

130 

131 assert (0 <= finch.light("R") <= 100) 

132 assert isinstance(finch.getLight("R"), int) 

133 

134 with pytest.raises(BirdbrainException) as e: 

135 finch.light("BAD") 

136 assert e.value.message == "Error: Request to device failed" 

137 

138def test_distance_with_alias(): 

139 finch = BirdbrainFinch("B") 

140 

141 response = finch.distance() 

142 response = finch.getDistance() 

143 

144 assert (0 <= response <= 298) 

145 assert isinstance(response, int) 

146 

147def test_line_with_alias(): 

148 finch = BirdbrainFinch("B") 

149 

150 assert (0 <= finch.line("L") <= 100) 

151 assert isinstance(finch.getLine("L"), int) 

152 

153 assert (0 <= finch.line("R") <= 100) 

154 assert isinstance(finch.getLine("R"), int) 

155 

156 with pytest.raises(BirdbrainException) as e: 

157 finch.line("BAD") 

158 assert e.value.message == "Error: Request to device failed" 

159 

160def test_encoder_with_alias(): 

161 finch = BirdbrainFinch("B") 

162 

163 assert (-100.0 <= finch.encoder("L") <= 100.0) 

164 assert isinstance(finch.getEncoder("L"), float) 

165 

166 assert (-100.0 <= finch.encoder("R") <= 100.0) 

167 assert isinstance(finch.getEncoder("R"), float) 

168 

169 with pytest.raises(BirdbrainException) as e: 

170 finch.encoder("BAD") 

171 assert e.value.message == "Error: Request to device failed" 

172 

173def test_orientation_with_alias(): 

174 finch = BirdbrainFinch("B") 

175 

176 response = finch.orientation() 

177 response = finch.getOrientation() 

178 

179 some_position = False 

180 for orientation in BirdbrainConstant.FINCH_ORIENTATION_RESULTS: 

181 some_position = some_position or (orientation == response) 

182 

183 assert some_position 

184 

185def test_stop_all(): 

186 finch = BirdbrainFinch("B") 

187 

188 finch.stop_all() 

189 finch.stopAll()