Example #1
0
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")
Example #2
0
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")
Example #3
0
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")
Example #4
0
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)
Example #5
0
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)
Example #6
0
def test_analog_write_with_reserved_pin(test_arduino: Arduino) -> None:
    with pytest.raises(PinIsReservedForSerialCommsError):
        test_arduino.analog_write(4, 100)
Example #7
0
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)
Example #8
0
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)))
Example #9
0
def test_digital_read_with_valid_args_low(test_arduino: Arduino) -> None:
    state = test_arduino.digital_read(0)
    assert state == LOW
Example #10
0
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), ))
Example #11
0
def test_pin_mode_with_incorrect_mode(test_arduino: Arduino) -> None:
    with pytest.raises(ValueError):
        test_arduino.pin_mode(0, HIGH)  # type: ignore
Example #12
0
def test_analog_read_with_non_analog_pin(test_arduino: Arduino) -> None:
    with pytest.raises(NotAnalogPinError):
        test_arduino.analog_read(0)
Example #13
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)))
Example #14
0
def test_digital_write_with_reserved_pin(test_arduino: Arduino) -> None:
    with pytest.raises(PinIsReservedForSerialCommsError):
        test_arduino.digital_write(4, HIGH)
Example #15
0
def test_analog_read_with_valid_args(test_arduino: Arduino) -> None:
    state = test_arduino.analog_read(1)
    assert state == 100
Example #16
0
def test_digital_write_with_pin_no_out_of_range(test_arduino: Arduino) -> None:
    with pytest.raises(PinDoesNotExistError):
        test_arduino.digital_write(6, HIGH)
Example #17
0
def test_digital_write_with_incorrect_state(test_arduino: Arduino) -> None:
    with pytest.raises(ValueError):
        test_arduino.digital_write(0, INPUT)  # type: ignore
Example #18
0
def test_digital_write_with_valid_args(test_arduino: Arduino) -> None:
    test_arduino.digital_write(0, HIGH)
Example #19
0
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)))
Example #20
0
def test_analog_write_with_valid_args(test_arduino: Arduino) -> None:
    test_arduino.analog_write(2, 100)
Example #21
0
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), ))
Example #22
0
def test_analog_write_with_non_pwm_pin(test_arduino: Arduino) -> None:
    with pytest.raises(NotPwmPinError):
        test_arduino.analog_write(0, 100)
Example #23
0
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), ))
Example #24
0
def test_pin_mode_with_valid_args(test_arduino: Arduino) -> None:
    test_arduino.pin_mode(0, INPUT)
Example #25
0
def test_pin_mode_with_reserved_pin(test_arduino: Arduino) -> None:
    with pytest.raises(PinIsReservedForSerialCommsError):
        test_arduino.pin_mode(4, OUTPUT)
Example #26
0
def test_analog_write_with_value_too_high(test_arduino: Arduino) -> None:
    with pytest.raises(ValueError):
        test_arduino.analog_write(2, 256)
Example #27
0
def test_pin_mode_with_pin_no_out_of_range(test_arduino: Arduino) -> None:
    with pytest.raises(PinDoesNotExistError):
        test_arduino.pin_mode(6, OUTPUT)
Example #28
0
def test_analog_write_with_negative_value(test_arduino: Arduino) -> None:
    with pytest.raises(ValueError):
        test_arduino.analog_write(2, -1)
Example #29
0
def test_analog_write_with_pin_no_out_of_range(test_arduino: Arduino) -> None:
    with pytest.raises(PinDoesNotExistError):
        test_arduino.analog_write(6, 0)
Example #30
0
def test_digital_read_with_valid_args_high(test_arduino: Arduino) -> None:
    state = test_arduino.digital_read(1)
    assert state == HIGH