def test_value_special_chars(self): """Test parsing and streaming string with special chars.""" raw = [0x48, 0x65, 0x79, 0x21, 0x3f, 0x24, 0x20, 0xc4, 0xd6, 0xdc, 0xe4, 0xf6, 0xfc, 0xdf] string = 'Hey!?$ ÄÖÜäöüß' self.assertEqual(DPTString.to_knx(string), raw) self.assertEqual(DPTString.from_knx(raw), string)
def test_value_max_string(self): """Test parsing and streaming large string.""" raw = [0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42, 0x42, 0x43, 0x43, 0x43, 0x43] string = 'AAAAABBBBBCCCC' self.assertEqual(DPTString.to_knx(string), raw) self.assertEqual(DPTString.from_knx(raw), string)
def test_value_empty_string(self): """Test parsing and streaming empty string.""" raw = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] string = '' self.assertEqual(DPTString.to_knx(string), raw) self.assertEqual(DPTString.from_knx(raw), string)
def test_value_from_documentation(self): """Test parsing and streaming Example from documentation.""" raw = [0x4B, 0x4E, 0x58, 0x20, 0x69, 0x73, 0x20, 0x4F, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00] string = 'KNX is OK' self.assertEqual(DPTString.to_knx(string), raw) self.assertEqual(DPTString.from_knx(raw), string)
def test_process(self): """Test process telegram with notification. Test if device was updated.""" xknx = XKNX(loop=self.loop) notification = Notification(xknx, 'Warning', group_address='1/2/3') telegram_set = Telegram(GroupAddress('1/2/3'), payload=DPTArray(DPTString().to_knx("Ein Prosit!"))) self.loop.run_until_complete(asyncio.Task(notification.process(telegram_set))) self.assertEqual(notification.message, "Ein Prosit!") telegram_unset = Telegram(GroupAddress('1/2/3'), payload=DPTArray(DPTString().to_knx(""))) self.loop.run_until_complete(asyncio.Task(notification.process(telegram_unset))) self.assertEqual(notification.message, "")
def test_from_knx_wrong_parameter_too_small(self): """Test parsing of KNX string with too less elements.""" raw = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] with self.assertRaises(ConversionError): DPTString().from_knx(raw)
def test_set(self): """Test notificationing off notification.""" xknx = XKNX(loop=self.loop) notification = Notification(xknx, 'Warning', group_address='1/2/3') self.loop.run_until_complete(asyncio.Task(notification.set("Ein Prosit!"))) self.assertEqual(xknx.telegrams.qsize(), 1) telegram = xknx.telegrams.get_nowait() self.assertEqual(telegram, Telegram(GroupAddress('1/2/3'), payload=DPTArray(DPTString().to_knx("Ein Prosit!"))))
async def _process_message(self, telegram): """Process incoming telegram for on/off state.""" if not isinstance(telegram.payload, DPTArray): raise CouldNotParseTelegram("payload not of type DPTArray", payload=telegram.payload, device_name=self.name) if len(telegram.payload.value) != 14: raise CouldNotParseTelegram("payload has invalid length!=14", length=len(telegram.payload.value), device_name=self.name) await self._set_internal_message(DPTString().from_knx( telegram.payload.value))
def test_process_callback(self): """Test process / reading telegrams from telegram queue. Test if callback was called.""" # pylint: disable=no-self-use xknx = XKNX(loop=self.loop) notification = Notification(xknx, 'Warning', group_address='1/2/3') after_update_callback = Mock() async def async_after_update_callback(device): """Async callback.""" after_update_callback(device) notification.register_device_updated_cb(async_after_update_callback) telegram_set = Telegram(GroupAddress('1/2/3'), payload=DPTArray(DPTString().to_knx("Ein Prosit!"))) self.loop.run_until_complete(asyncio.Task(notification.process(telegram_set))) after_update_callback.assert_called_with(notification)
def set(self, message): """Set message.""" cropped_message = message[:14] yield from self.send(self.group_address, DPTArray(DPTString().to_knx(cropped_message))) yield from self._set_internal_message(cropped_message)
def test_to_knx_too_long(self): """Test serializing DPTString to KNX with wrong value (to long).""" with self.assertRaises(ConversionError): DPTString().to_knx("AAAAABBBBBCCCCx")
def test_to_knx_wrong_parameter(self): """Test serializing DPTString to KNX with wrong value (int).""" with self.assertRaises(ConversionError): DPTString().to_knx(123)
def test_to_knx_wrong_parameter(self): """Test parsing of DPT2ByteFloat with wrong value (string).""" with self.assertRaises(ConversionError): DPTString().to_knx(123)