def test_backend_read_digital_state_requires_pin_mode() -> None: """Check that pin must be in DIGITAL_INPUT* mode for read digital state to work.""" backend = SBArduinoHardwareBackend("COM0", SBArduinoSerial) backend.set_gpio_pin_mode(2, GPIOPinMode.DIGITAL_OUTPUT) assert backend.get_gpio_pin_mode(2) is not GPIOPinMode.DIGITAL_INPUT with pytest.raises(ValueError): backend.read_gpio_pin_digital_state(2)
def test_backend_read_digital_state() -> None: """Test that we can read the digital state of a pin.""" backend = SBArduinoHardwareBackend("COM0", SBArduinoSerial) serial = cast(SBArduinoSerial, backend._serial) serial.check_data_sent_by_constructor() backend.set_gpio_pin_mode(2, GPIOPinMode.DIGITAL_INPUT) serial.check_sent_data(b"W 2 Z\n") serial.append_received_data(b"> H", newline=True) assert backend.read_gpio_pin_digital_state(2) is True serial.check_sent_data(b"R 2\n") serial.append_received_data(b"> L", newline=True) assert backend.read_gpio_pin_digital_state(2) is False serial.check_sent_data(b"R 2\n") serial.append_received_data(b"> X", newline=True) # invalid with pytest.raises(CommunicationError): backend.read_gpio_pin_digital_state(2) serial.check_sent_data(b"R 2\n") serial.check_all_received_data_consumed()
def test_backend_read_digital_state_requires_digital_pin() -> None: """Check that pins 14-19 are not supported by read digital state.""" backend = SBArduinoHardwareBackend("COM0", SBArduinoSerial) with pytest.raises(NotSupportedByHardwareError): backend.read_gpio_pin_digital_state(14)