def test_digital_write_can_only_be_done_by_registered_component( test_arduino: Arduino, ) -> None: test_arduino.digital_write(0, HIGH) test_arduino.register_component("component_id_1", pins=(Pin(0), )) test_arduino.digital_write(0, HIGH, token="component_id_1") with pytest.raises(ProtectedPinError): test_arduino.digital_write(0, HIGH) with pytest.raises(ProtectedPinError): test_arduino.digital_write(0, HIGH, token="component_id_2")
def test_pin_mode_can_only_be_done_by_registered_component( test_arduino: Arduino, ) -> None: test_arduino.pin_mode(0, INPUT) test_arduino.register_component("component_id_1", pins=(Pin(0), )) test_arduino.pin_mode(0, INPUT, token="component_id_1") with pytest.raises(ProtectedPinError): test_arduino.pin_mode(0, INPUT) with pytest.raises(ProtectedPinError): test_arduino.pin_mode(0, INPUT, token="component_id_2")
def test_analog_write_can_only_be_done_by_registered_component( test_arduino: Arduino, ) -> None: test_arduino.analog_write(2, 0) test_arduino.register_component("component_id_1", pins=(Pin(2), )) test_arduino.analog_write(2, 1, token="component_id_1") with pytest.raises(ProtectedPinError): test_arduino.analog_write(2, 1) with pytest.raises(ProtectedPinError): test_arduino.analog_write(2, 1, token="component_id_2")
def test_if_sketch_version_is_a_major_change_above_required_version() -> None: conn_class = Mock(spec=SerialConnection) v = Arduino.min_version sketch_version = (v[0] + 1, v[1], v[2]) conn_class.build.return_value.process_command.return_value = sketch_version with pytest.raises(ArduinoSketchVersionIncompatibleError): Arduino(pins=(), port="", conn_class=conn_class)
def test_arduino() -> Arduino: pins = ( Pin(0), Pin(1, is_analog=True), Pin(2, is_pwm=True), Pin(3), Pin(4), Pin(5), ) return Arduino(pins=pins, port="", conn_class=get_mock_conn_class(), rx_pin=4, tx_pin=5)
def test_analog_write_with_reserved_pin(test_arduino: Arduino) -> None: with pytest.raises(PinIsReservedForSerialCommsError): test_arduino.analog_write(4, 100)
def test_serial_comms_pins_cannot_be_used(arduino: Arduino) -> None: with pytest.raises(PinIsReservedForSerialCommsError): arduino.digital_write(0, HIGH) with pytest.raises(PinIsReservedForSerialCommsError): arduino.digital_write(1, HIGH)
def test_component_can_be_re_registered_after_being_deregistered( test_arduino: Arduino, ) -> None: test_arduino.register_component("component_id_1", pins=(Pin(0), Pin(1))) test_arduino.deregister_component("component_id_1") test_arduino.register_component("component_id_1", pins=(Pin(2), Pin(3)))
def test_digital_read_with_valid_args_low(test_arduino: Arduino) -> None: state = test_arduino.digital_read(0) assert state == LOW
def test_pins_must_be_compatible_when_registering_an_analog_pin( test_arduino: Arduino, ) -> None: with pytest.raises(NotAnalogPinError): test_arduino.register_component("component_id_1", pins=(Pin(0, is_analog=True), ))
def test_pin_mode_with_incorrect_mode(test_arduino: Arduino) -> None: with pytest.raises(ValueError): test_arduino.pin_mode(0, HIGH) # type: ignore
def test_analog_read_with_non_analog_pin(test_arduino: Arduino) -> None: with pytest.raises(NotAnalogPinError): test_arduino.analog_read(0)
def test_component_can_only_be_registered_once(test_arduino: Arduino) -> None: test_arduino.register_component("component_id_1", pins=(Pin(0), Pin(1))) with pytest.raises(ComponentAlreadyRegisteredError): test_arduino.register_component("component_id_1", pins=(Pin(2), Pin(3)))
def test_digital_write_with_reserved_pin(test_arduino: Arduino) -> None: with pytest.raises(PinIsReservedForSerialCommsError): test_arduino.digital_write(4, HIGH)
def test_analog_read_with_valid_args(test_arduino: Arduino) -> None: state = test_arduino.analog_read(1) assert state == 100
def test_digital_write_with_pin_no_out_of_range(test_arduino: Arduino) -> None: with pytest.raises(PinDoesNotExistError): test_arduino.digital_write(6, HIGH)
def test_digital_write_with_incorrect_state(test_arduino: Arduino) -> None: with pytest.raises(ValueError): test_arduino.digital_write(0, INPUT) # type: ignore
def test_digital_write_with_valid_args(test_arduino: Arduino) -> None: test_arduino.digital_write(0, HIGH)
def test_pins_cannot_be_reused(test_arduino: Arduino) -> None: test_arduino.register_component("component_id_1", pins=(Pin(0), Pin(1))) with pytest.raises(PinAlreadyRegisteredError): test_arduino.register_component("component_id_2", pins=(Pin(1), Pin(2)))
def test_analog_write_with_valid_args(test_arduino: Arduino) -> None: test_arduino.analog_write(2, 100)
def test_pins_cannot_be_registered_to_a_reserved_pin( test_arduino: Arduino) -> None: with pytest.raises(PinIsReservedForSerialCommsError): test_arduino.register_component("component_id_1", pins=(Pin(4), ))
def test_analog_write_with_non_pwm_pin(test_arduino: Arduino) -> None: with pytest.raises(NotPwmPinError): test_arduino.analog_write(0, 100)
def test_pins_must_exist_for_component_to_exist(test_arduino: Arduino) -> None: with pytest.raises(PinDoesNotExistError): test_arduino.register_component("component_id_1", pins=(Pin(6), ))
def test_pin_mode_with_valid_args(test_arduino: Arduino) -> None: test_arduino.pin_mode(0, INPUT)
def test_pin_mode_with_reserved_pin(test_arduino: Arduino) -> None: with pytest.raises(PinIsReservedForSerialCommsError): test_arduino.pin_mode(4, OUTPUT)
def test_analog_write_with_value_too_high(test_arduino: Arduino) -> None: with pytest.raises(ValueError): test_arduino.analog_write(2, 256)
def test_pin_mode_with_pin_no_out_of_range(test_arduino: Arduino) -> None: with pytest.raises(PinDoesNotExistError): test_arduino.pin_mode(6, OUTPUT)
def test_analog_write_with_negative_value(test_arduino: Arduino) -> None: with pytest.raises(ValueError): test_arduino.analog_write(2, -1)
def test_analog_write_with_pin_no_out_of_range(test_arduino: Arduino) -> None: with pytest.raises(PinDoesNotExistError): test_arduino.analog_write(6, 0)
def test_digital_read_with_valid_args_high(test_arduino: Arduino) -> None: state = test_arduino.digital_read(1) assert state == HIGH