示例#1
0
文件: str_test.py 项目: onkelbeh/xknx
    def test_remote_value(self):
        """Test string representation of remote value."""
        xknx = XKNX()
        remote_value = RemoteValue(
            xknx,
            group_address="1/2/3",
            device_name="MyDevice",
            group_address_state="1/2/4",
        )
        assert (
            str(remote_value) ==
            '<RemoteValue device_name="MyDevice" feature_name="Unknown" <1/2/3, 1/2/4, [], None /> />'
        )

        remote_value.value = 34
        assert (str(remote_value) ==
                '<RemoteValue device_name="MyDevice" feature_name="Unknown" '
                "<1/2/3, 1/2/4, [], 34 /> />")

        remote_value_passive = RemoteValue(
            xknx,
            group_address=["1/2/3", "1/2/4", "i-test"],
            device_name="MyDevice",
        )
        assert (
            str(remote_value_passive) ==
            "<RemoteValue device_name=\"MyDevice\" feature_name=\"Unknown\" <1/2/3, None, ['1/2/4', 'i-test'], None /> />"
        )
示例#2
0
    async def test_get_set_value(self):
        """Test value getter and setter."""
        xknx = XKNX()
        remote_value = RemoteValue(xknx)
        remote_value.to_knx = lambda value: DPTArray(
            DPT2ByteFloat.to_knx(value))
        remote_value.after_update_cb = AsyncMock()

        assert remote_value.value is None
        remote_value.value = 2.2
        assert remote_value.value == 2.2
        # invalid value raises ConversionError
        with pytest.raises(ConversionError):
            remote_value.value = "a"
        # new value is used in response Telegram
        test_payload = remote_value.to_knx(2.2)
        remote_value._send = AsyncMock()
        await remote_value.respond()
        remote_value._send.assert_called_with(test_payload, response=True)
        # callback is not called when setting value programmatically
        remote_value.after_update_cb.assert_not_called()
        # no Telegram was sent to the queue
        assert xknx.telegrams.qsize() == 0