示例#1
0
    def test_process_invalid_payload(self):
        """Test if exception is raised when processing telegram with invalid payload."""
        xknx = XKNX()
        remote_value = RemoteValue(xknx)
        with patch("xknx.remote_value.RemoteValue.payload_valid") as patch_valid, patch(
            "xknx.remote_value.RemoteValue.has_group_address"
        ) as patch_has_group_address:
            patch_valid.return_value = False
            patch_has_group_address.return_value = True

            telegram = Telegram(GroupAddress("1/2/1"), payload=DPTArray((0x01, 0x02)))
            with self.assertRaises(CouldNotParseTelegram):
                self.loop.run_until_complete(remote_value.process(telegram))
示例#2
0
    def test_process_unsupported_payload(self):
        """Test if exception is raised when processing telegram with unsupported payload."""
        xknx = XKNX()
        remote_value = RemoteValue(xknx)
        with patch("xknx.remote_value.RemoteValue.payload_valid") as patch_valid, patch(
            "xknx.remote_value.RemoteValue.has_group_address"
        ) as patch_has_group_address:
            patch_valid.return_value = False
            patch_has_group_address.return_value = True

            telegram = Telegram(
                destination_address=GroupAddress("1/2/1"),
                payload=object(),
            )
            with self.assertRaisesRegex(
                CouldNotParseTelegram,
                r".*payload not a GroupValueWrite or GroupValueResponse.*",
            ):
                self.loop.run_until_complete(remote_value.process(telegram))
示例#3
0
 def test_process_listening_address(self):
     """Test if listening group addresses are processed."""
     xknx = XKNX()
     remote_value = RemoteValue(
         xknx, group_address="1/2/3", passive_group_addresses=["1/1/1"]
     )
     self.assertTrue(remote_value.writable)
     self.assertFalse(remote_value.readable)
     # RemoteValue is initialized with only passive group address
     self.assertTrue(remote_value.initialized)
     with patch("xknx.remote_value.RemoteValue.payload_valid") as patch_valid:
         patch_valid.return_value = True
         test_payload = DPTArray((0x01, 0x02))
         telegram = Telegram(GroupAddress("1/1/1"), payload=test_payload)
         self.assertTrue(
             self.loop.run_until_complete(
                 asyncio.Task(remote_value.process(telegram))
             )
         )
         self.assertEqual(remote_value.payload, test_payload)