Beispiel #1
0
class TestMotionService(object):

    SAMPLE_SPEED = 10
    SAMPLE_ROTATION_ANGLE = 20
    SAMPLE_DESTINATION = Vector2(35, 67)
    SAMPLE_PATH = object()
    SAMPLE_ROBOT_SIDE = object()
    SAMPLE_BOOLEAN = True
    
    @mock.patch('services.motion.navigation.PathNavigator.PathNavigator', autospec = False)
    @mock.patch('services.motion.MovementExecutor.MovementExecutor', autospec = False)
    def setup(self, movement_executor_mock, path_navigator_mock):
        self._movement_executor_mock_instance = movement_executor_mock.return_value
        self._path_navigator_mock_instance = path_navigator_mock.return_value
        self._motion_service = MotionService(self._movement_executor_mock_instance, self._path_navigator_mock_instance)
      
    def test_given_forward_movement_speed_when_moving_then_movement_executor_is_called(self):
        self._motion_service.move(forward_speed = self.SAMPLE_SPEED)
        self._movement_executor_mock_instance.move.assert_any_call(movement_type = MovementType.MOVE_FORWARD, speed_cmps = self.SAMPLE_SPEED)

    def test_given_backward_movement_speed_when_moving_then_movement_executor_is_called(self):
        self._motion_service.move(backward_speed = self.SAMPLE_SPEED)
        self._movement_executor_mock_instance.move.assert_any_call(movement_type = MovementType.MOVE_BACKWARD, speed_cmps = self.SAMPLE_SPEED)

    def test_given_left_movement_speed_when_moving_then_movement_executor_is_called(self):
        self._motion_service.move(left_speed = self.SAMPLE_SPEED)
        self._movement_executor_mock_instance.move.assert_any_call(movement_type = MovementType.MOVE_LEFT, speed_cmps = self.SAMPLE_SPEED)

    def test_given_right_movement_speed_when_moving_then_movement_executor_is_called(self):
        self._motion_service.move(right_speed = self.SAMPLE_SPEED)
        self._movement_executor_mock_instance.move.assert_any_call(movement_type = MovementType.MOVE_RIGHT, speed_cmps = self.SAMPLE_SPEED)

    def test_given_rotate_left_movement_speed_when_moving_then_movement_executor_is_called(self):
        self._motion_service.move(rotate_left_speed = self.SAMPLE_SPEED)
        self._movement_executor_mock_instance.move.assert_any_call(movement_type = MovementType.ROTATE_LEFT, speed_cmps = self.SAMPLE_SPEED)

    def test_given_rotate_right_movement_speed_when_moving_then_movement_executor_is_called(self):
        self._motion_service.move(rotate_right_speed = self.SAMPLE_SPEED)
        self._movement_executor_mock_instance.move.assert_any_call(movement_type = MovementType.ROTATE_RIGHT, speed_cmps = self.SAMPLE_SPEED)

    def test_given_rotate_angle_when_rotating_the_move_movement_executor_is_called(self):
        self._motion_service.rotate(self.SAMPLE_ROTATION_ANGLE, self.SAMPLE_SPEED)
        self._movement_executor_mock_instance.rotate.assert_called_with(angle_deg = self.SAMPLE_ROTATION_ANGLE, speed_cmps = self.SAMPLE_SPEED)

    def test_given_destination_when_moving_then_movement_executor_is_called(self):
        self._motion_service.move_to(self.SAMPLE_DESTINATION, self.SAMPLE_SPEED)
        self._movement_executor_mock_instance.move_to.assert_called_with(destination_cm = self.SAMPLE_DESTINATION, max_speed_cmps = self.SAMPLE_SPEED)

    def test_given_path_when_navigating_path_then_path_navigator_is_called(self):
        self._motion_service.navigate_path(self.SAMPLE_PATH, self.SAMPLE_DESTINATION, self.SAMPLE_ROBOT_SIDE, self.SAMPLE_BOOLEAN)
        self._path_navigator_mock_instance.navigate.assert_called_with(self.SAMPLE_PATH, MotionService.NORMAL_NAVIGATION_MOVE_SPEED_CMPS, MotionService.NORMAL_NAVIGATION_ROTATION_SPEED_CMPS, self.SAMPLE_DESTINATION, self.SAMPLE_ROBOT_SIDE, self.SAMPLE_BOOLEAN)

    def test_when_stopping_movenent_then_movement_is_stopped(self):
        self._motion_service.stop_movement()

        self._movement_executor_mock_instance.stop_movement.assert_called_with()
        self._path_navigator_mock_instance.stop_navigation.assert_called_with()
Beispiel #2
0
 def setup(self, movement_executor_mock, path_navigator_mock):
     self._movement_executor_mock_instance = movement_executor_mock.return_value
     self._path_navigator_mock_instance = path_navigator_mock.return_value
     self._motion_service = MotionService(self._movement_executor_mock_instance, self._path_navigator_mock_instance)