Coverage for finch/test_finch_input.py: 100%

84 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-03-04 20:20 -0500

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_finch_output import BirdbrainFinchOutput 

9from birdbrain_request import BirdbrainRequest 

10 

11def test_is_moving(): 

12 assert BirdbrainFinchOutput.move("B", BirdbrainConstant.FORWARD, 7, 5, False) 

13 assert BirdbrainFinchInput.is_moving("B") 

14 

15 BirdbrainFinchOutput.wait("B") 

16 

17 assert BirdbrainFinchOutput.move("B", BirdbrainConstant.BACKWARD, 7, 5, True) 

18 

19 assert BirdbrainRequest.stop_all("B") 

20 

21 assert not BirdbrainFinchInput.is_moving("B") 

22 

23def test_light(): 

24 response = BirdbrainFinchInput.light("B", "L") 

25 

26 assert (0 <= response <= 100) 

27 assert isinstance(response, int) 

28 

29 response = BirdbrainFinchInput.light("B", "R") 

30 

31 assert (0 <= response <= 100) 

32 assert isinstance(response, int) 

33 

34 with pytest.raises(BirdbrainException) as e: 

35 BirdbrainFinchInput.light("B", "BAD") 

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

37 

38 with pytest.raises(BirdbrainException) as e: 

39 BirdbrainFinchInput.light("B", None) 

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

41 

42def test_distance(): 

43 response = BirdbrainFinchInput.distance("B") 

44 

45 assert (0 <= response <= 298) 

46 assert isinstance(response, int) 

47 

48def test_line(): 

49 response = BirdbrainFinchInput.line("B", "L") 

50 

51 assert (0 <= response <= 100) 

52 assert isinstance(response, int) 

53 

54 response = BirdbrainFinchInput.line("B", "R") 

55 

56 assert (0 <= response <= 100) 

57 assert isinstance(response, int) 

58 

59 with pytest.raises(BirdbrainException) as e: 

60 BirdbrainFinchInput.line("B", "BAD") 

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

62 

63 with pytest.raises(BirdbrainException) as e: 

64 BirdbrainFinchInput.line("B", None) 

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

66 

67def test_encoder(): 

68 response = BirdbrainFinchInput.encoder("B", "L") 

69 

70 assert (-100.0 <= response <= 100.0) 

71 assert isinstance(response, float) 

72 

73 response = BirdbrainFinchInput.encoder("B", "R") 

74 

75 assert (-100.0 <= response <= 100.0) 

76 assert isinstance(response, float) 

77 

78 with pytest.raises(BirdbrainException) as e: 

79 BirdbrainFinchInput.encoder("B", "BAD") 

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

81 

82 with pytest.raises(BirdbrainException) as e: 

83 BirdbrainFinchInput.encoder("B", None) 

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

85 

86def test_acceleration(): 

87 response = BirdbrainFinchInput.acceleration("B") 

88 

89 assert (-100.0 <= response[0] <= 100.0) 

90 assert (-100.0 <= response[1] <= 100.0) 

91 assert (-100.0 <= response[2] <= 100.0) 

92 

93 assert isinstance(response[0], float) 

94 assert isinstance(response[1], float) 

95 assert isinstance(response[2], float) 

96 

97def test_compass(): 

98 response = BirdbrainFinchInput.compass("B") 

99 

100 assert (0 <= response <= 359) 

101 assert isinstance(response, int) 

102 

103def test_magnetometer(): 

104 response = BirdbrainFinchInput.magnetometer("B") 

105 

106 assert (-180.0 <= response[0] <= 180.0) 

107 assert (-180.0 <= response[1] <= 180.0) 

108 assert (-180.0 <= response[2] <= 180.0) 

109 

110 assert isinstance(response[0], int) 

111 assert isinstance(response[1], int) 

112 assert isinstance(response[2], int) 

113 

114def test_orientation(): 

115 response = BirdbrainFinchInput.orientation("B") 

116 

117 some_position = False 

118 for orientation in BirdbrainConstant.FINCH_ORIENTATION_RESULTS: 

119 some_position = some_position or (orientation == response) 

120 

121 assert some_position