lerobot/tests/motors/test_dynamixel.py

45 lines
1.4 KiB
Python
Raw Normal View History

2025-03-16 04:45:05 +08:00
import sys
from unittest.mock import patch
import pytest
2025-03-16 06:43:26 +08:00
from lerobot.common.motors.dynamixel import DynamixelMotorsBus
2025-03-16 04:45:05 +08:00
from tests.mocks import mock_dynamixel_sdk
@pytest.fixture(autouse=True)
def patch_dynamixel_sdk():
with patch.dict(sys.modules, {"dynamixel_sdk": mock_dynamixel_sdk}):
yield
def test_patch_sdk():
assert "dynamixel_sdk" in sys.modules # Should be patched
assert sys.modules["dynamixel_sdk"] is mock_dynamixel_sdk # Should match the mock
def test_abc_implementation():
# Instantiation should raise an error if the class doesn't implements abstract methods/properties
2025-03-16 05:19:50 +08:00
DynamixelMotorsBus(port="/dev/dummy-port", motors={"dummy": (1, "xl330-m077")})
def test_configure_motors_all_ids_1():
# see X_SERIES_BAUDRATE_TABLE
smaller_baudrate = 9_600
smaller_baudrate_value = 0
# This test expect the configuration was already correct.
motors_bus = DynamixelMotorsBus(port="/dev/dummy-port", motors={"dummy": (1, "xl330-m077")})
motors_bus.connect()
motors_bus.write("Baud_Rate", [smaller_baudrate_value] * len(motors_bus))
motors_bus.set_baudrate(smaller_baudrate)
motors_bus.write("ID", [1] * len(motors_bus))
del motors_bus
# Test configure
motors_bus = DynamixelMotorsBus(port="/dev/dummy-port", motors={"dummy": (1, "xl330-m077")})
motors_bus.connect()
assert motors_bus.are_motors_configured()
del motors_bus