Esempio n. 1
0
def test_backend_discover_usb_error() -> None:
    """
    Test that a USBCommunication Error is thrown in discover.

    Any USBError should be handled and wrapped.
    """
    with pytest.raises(USBCommunicationError):
        SRV4ServoBoardHardwareBackend.discover(find=usb_error_find)
Esempio n. 2
0
def test_backend_initialisation() -> None:
    """Test that we can initialise a backend."""
    device = MockUSBServoBoardDevice("SERIAL0")
    backend = SRV4ServoBoardHardwareBackend(device)

    assert isinstance(backend, SRV4ServoBoardHardwareBackend)
    assert backend._usb_device is device

    assert len(backend._positions) == 12
    assert all(pos == 0.0 for pos in backend._positions)
Esempio n. 3
0
def test_backend_get_servo_position() -> None:
    """Test that we can get the position of a servo."""
    device = MockUSBServoBoardDevice("SERIAL0")
    backend = SRV4ServoBoardHardwareBackend(device)

    assert all(backend.get_servo_position(i) == 0.0 for i in range(12))

    for i in range(12):
        backend.set_servo_position(i, 0.5)

    assert all(backend.get_servo_position(i) == 0.5 for i in range(12))
Esempio n. 4
0
def test_backend_set_servo_position() -> None:
    """Test that we can set the position of a servo."""
    device = MockUSBServoBoardDevice("SERIAL0")
    backend = SRV4ServoBoardHardwareBackend(device)

    for i in range(12):
        backend.set_servo_position(i, 0)
        backend.set_servo_position(i, 0.0)
        backend.set_servo_position(i, 0.5)
        backend.set_servo_position(i, 1)
        backend.set_servo_position(i, 1.0)
        backend.set_servo_position(i, -1)
        backend.set_servo_position(i, -1.0)
Esempio n. 5
0
def test_backend_get_servo_pos_identifier_range() -> None:
    """Test the bounds of the indentifier on get servo pos."""
    device = MockUSBServoBoardDevice("SERIAL0")
    backend = SRV4ServoBoardHardwareBackend(device)

    for i in range(12):
        backend.get_servo_position(i)

    with pytest.raises(ValueError):
        backend.get_servo_position(12)

    with pytest.raises(ValueError):
        backend.get_servo_position(-1)

    with pytest.raises(ValueError):
        backend.get_servo_position(1.0)  # type: ignore
Esempio n. 6
0
def test_backend_servo_position_out_of_bounds() -> None:
    """Test that a ValueError is thrown when position is wrong."""
    device = MockUSBServoBoardDevice("SERIAL0")
    backend = SRV4ServoBoardHardwareBackend(device)

    with pytest.raises(ValueError):
        backend.set_servo_position(0, 100)

    with pytest.raises(ValueError):
        backend.set_servo_position(0, -100)

    with pytest.raises(ValueError):
        backend.set_servo_position(0, -1.1)

    with pytest.raises(ValueError):
        backend.set_servo_position(0, 1.1)

    with pytest.raises(NotSupportedByHardwareError):
        backend.set_servo_position(0, None)
Esempio n. 7
0
def test_backend_serial_number() -> None:
    """Test that we can get the serial number."""
    device = MockUSBServoBoardDevice("SERIAL0")
    backend = SRV4ServoBoardHardwareBackend(device)

    assert backend.serial == "SERIAL0"
Esempio n. 8
0
def test_backend_catch_usb_error_other() -> None:
    """Test that we catch and throw usb errors properly."""
    device = MockUSBServoBoardDeviceUSBTimerExpired("SERIAL0")
    with pytest.raises(USBCommunicationError):
        SRV4ServoBoardHardwareBackend(device)
Esempio n. 9
0
def test_backend_catch_usb_error_input_output() -> None:
    """Test that we catch and throw usb input/output errors properly."""
    device = MockUSBServoBoardDeviceUSBInputOutput("SERIAL0")
    with pytest.raises(CommunicationError):
        SRV4ServoBoardHardwareBackend(device)
Esempio n. 10
0
def test_backend_bad_firmware_version() -> None:
    """Test that we can get the firmware version."""
    device = MockUSBServoBoardDevice("SERIAL0", fw_version=1)
    with pytest.raises(NotImplementedError):
        SRV4ServoBoardHardwareBackend(device)
Esempio n. 11
0
def test_backend_firmware_version() -> None:
    """Test that we can get the firmware version."""
    device = MockUSBServoBoardDevice("SERIAL0")
    backend = SRV4ServoBoardHardwareBackend(device)

    assert backend.firmware_version == "2"
Esempio n. 12
0
def test_backend_cleanup() -> None:
    """Test that the backend cleans things up properly."""
    device = MockUSBServoBoardDevice("SERIAL0")
    backend = SRV4ServoBoardHardwareBackend(device)

    del backend
Esempio n. 13
0
def test_backend_discover() -> None:
    """Test that the backend can discover boards."""
    found_boards = SRV4ServoBoardHardwareBackend.discover(find=mock_find)

    assert len(found_boards) == 4
    assert all(type(board) is ServoBoard for board in found_boards)