Files
enocean2knx-gw/enocean/enocean/communicators/tests/test_communicator.py
T
2026-06-21 18:42:39 +00:00

93 lines
2.3 KiB
Python

# -*- encoding: utf-8 -*-
from __future__ import print_function, unicode_literals, division, absolute_import
from enocean.communicators.communicator import Communicator
from enocean.protocol.packet import Packet, RadioPacket
from enocean.protocol.constants import PACKET
from enocean.decorators import timing
@timing(1000)
def test_buffer():
''' Test buffer parsing for Communicator '''
data = bytearray([
0x55,
0x00, 0x0A, 0x07, 0x01,
0xEB,
0xA5, 0x00, 0x00, 0x55, 0x08, 0x01, 0x81, 0xB7, 0x44, 0x00,
0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x2D, 0x00,
0x75
])
com = Communicator()
com._buffer.extend(data[0:5])
com.parse()
assert com.receive.qsize() == 0
com._buffer.extend(data[5:])
com.parse()
assert com.receive.qsize() == 1
@timing(1000)
def test_send():
''' Test sending packets to Communicator '''
com = Communicator()
assert com.send('AJSNDJASNDJANSD') is False
assert com.transmit.qsize() == 0
assert com._get_from_send_queue() is None
assert com.send(Packet(PACKET.COMMON_COMMAND, [0x08])) is True
assert com.transmit.qsize() == 1
assert isinstance(com._get_from_send_queue(), Packet)
def test_stop():
com = Communicator()
com.stop()
assert com._stop_flag.is_set()
def test_callback():
def callback(packet):
assert isinstance(packet, RadioPacket)
data = bytearray([
0x55,
0x00, 0x0A, 0x07, 0x01,
0xEB,
0xA5, 0x00, 0x00, 0x55, 0x08, 0x01, 0x81, 0xB7, 0x44, 0x00,
0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x2D, 0x00,
0x75
])
com = Communicator(callback=callback)
com._buffer.extend(data)
com.parse()
assert com.receive.qsize() == 0
def test_base_id():
com = Communicator()
assert com.base_id is None
other_data = bytearray([
0x55,
0x00, 0x0A, 0x07, 0x01,
0xEB,
0xA5, 0x00, 0x00, 0x55, 0x08, 0x01, 0x81, 0xB7, 0x44, 0x00,
0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x2D, 0x00,
0x75
])
response_data = bytearray([
0x55,
0x00, 0x05, 0x00, 0x02,
0xCE,
0x00, 0xFF, 0x87, 0xCA, 0x00,
0xA3
])
com._buffer.extend(other_data)
com._buffer.extend(response_data)
com.parse()
assert com.base_id == [0xFF, 0x87, 0xCA, 0x00]
assert com.receive.qsize() == 2