test_robot.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import pytest
  2. from robot.movement import RobotMovement
  3. from robot.controller import RobotController, Cell, CellStatus
  4. from robot.config import ConfigParser
  5. @pytest.fixture
  6. def robot_movement():
  7. return RobotMovement()
  8. @pytest.fixture
  9. def robot_controller():
  10. return RobotController(ConfigParser())
  11. class TestRobotMovement:
  12. def test_init_position(self, robot_movement: RobotMovement):
  13. assert robot_movement.get_position() == (0.0, 0.0, 0.0)
  14. assert not robot_movement.is_moving
  15. def test_set_speed(self, robot_movement: RobotMovement):
  16. robot_movement.set_speed(200.0)
  17. assert robot_movement.speed == 200.0
  18. with pytest.raises(ValueError):
  19. robot_movement.set_speed(-100.0)
  20. def test_move_to_position(self, robot_movement: RobotMovement):
  21. result = robot_movement.move_to_position(100.0, 200.0, 300.0)
  22. assert result is True
  23. assert robot_movement.get_position() == (100.0, 200.0, 300.0)
  24. def test_move_relative(self, robot_movement: RobotMovement):
  25. robot_movement.move_to_position(100.0, 100.0, 100.0)
  26. result = robot_movement.move_relative(50.0, -50.0, 25.0)
  27. assert result is True
  28. assert robot_movement.get_position() == (150.0, 50.0, 125.0)
  29. class TestRobotController:
  30. def test_init_controller(self, robot_controller: RobotController):
  31. assert len(robot_controller.devices) > 0
  32. assert robot_controller.feeder is not None
  33. assert not robot_controller.gripper_occupied
  34. @pytest.mark.asyncio
  35. async def test_get_next_free_slot(self, robot_controller: RobotController):
  36. slot = robot_controller.get_next_free_slot()
  37. assert slot is not None
  38. assert not slot.occupied
  39. @pytest.mark.asyncio
  40. async def test_insert_and_collect_cell(self, robot_controller: RobotController):
  41. # Test cell insertion
  42. cell = Cell(id="test_cell", status=CellStatus.WAITING)
  43. slot = robot_controller.get_next_free_slot()
  44. robot_controller.gripper_occupied = True
  45. await robot_controller.insert_cell_to_slot(cell, slot)
  46. assert slot.occupied
  47. assert slot.cell_id == cell.id
  48. # Test cell collection
  49. collected_cell = await robot_controller.collect_cell_from_slot(slot)
  50. assert not slot.occupied
  51. assert slot.cell_id is None
  52. assert collected_cell == cell.id