Fix QOS flag init + add tests

pull/8/head
Nico 2015-10-10 14:42:49 +02:00
rodzic 10a0ef797b
commit a456d9cf21
2 zmienionych plików z 75 dodań i 1 usunięć

Wyświetl plik

@ -112,7 +112,7 @@ class PublishPacket(MQTTPacket):
@qos.setter
def qos(self, val: int):
self.fixed_header.flags &= (0x00 << 1)
self.fixed_header.flags &= 0xf9
self.fixed_header.flags |= (val << 1)
@classmethod

Wyświetl plik

@ -6,6 +6,7 @@ import unittest
from hbmqtt.mqtt.publish import PublishPacket, PublishVariableHeader, PublishPayload
from hbmqtt.adapters import BufferReader
from hbmqtt.codecs import *
from hbmqtt.mqtt.constants import QOS_0, QOS_1, QOS_2
class PublishPacketTest(unittest.TestCase):
@ -45,3 +46,76 @@ class PublishPacketTest(unittest.TestCase):
publish = PublishPacket(variable_header=variable_header, payload=payload)
out = publish.to_bytes()
self.assertEqual(out, b'\x30\x13\x00\x05topic\00\x0a0123456789')
def test_build(self):
packet = PublishPacket.build('/topic', b'data', 1, False, QOS_0, False)
self.assertEquals(packet.packet_id, 1)
self.assertFalse(packet.dup_flag)
self.assertEquals(packet.qos, QOS_0)
self.assertFalse(packet.retain_flag)
packet = PublishPacket.build('/topic', b'data', 1, False, QOS_1, False)
self.assertEquals(packet.packet_id, 1)
self.assertFalse(packet.dup_flag)
self.assertEquals(packet.qos, QOS_1)
self.assertFalse(packet.retain_flag)
packet = PublishPacket.build('/topic', b'data', 1, False, QOS_2, False)
self.assertEquals(packet.packet_id, 1)
self.assertFalse(packet.dup_flag)
self.assertEquals(packet.qos, QOS_2)
self.assertFalse(packet.retain_flag)
packet = PublishPacket.build('/topic', b'data', 1, True, QOS_0, False)
self.assertEquals(packet.packet_id, 1)
self.assertTrue(packet.dup_flag)
self.assertEquals(packet.qos, QOS_0)
self.assertFalse(packet.retain_flag)
packet = PublishPacket.build('/topic', b'data', 1, True, QOS_1, False)
self.assertEquals(packet.packet_id, 1)
self.assertTrue(packet.dup_flag)
self.assertEquals(packet.qos, QOS_1)
self.assertFalse(packet.retain_flag)
packet = PublishPacket.build('/topic', b'data', 1, True, QOS_2, False)
self.assertEquals(packet.packet_id, 1)
self.assertTrue(packet.dup_flag)
self.assertEquals(packet.qos, QOS_2)
self.assertFalse(packet.retain_flag)
packet = PublishPacket.build('/topic', b'data', 1, False, QOS_0, True)
self.assertEquals(packet.packet_id, 1)
self.assertFalse(packet.dup_flag)
self.assertEquals(packet.qos, QOS_0)
self.assertTrue(packet.retain_flag)
packet = PublishPacket.build('/topic', b'data', 1, False, QOS_1, True)
self.assertEquals(packet.packet_id, 1)
self.assertFalse(packet.dup_flag)
self.assertEquals(packet.qos, QOS_1)
self.assertTrue(packet.retain_flag)
packet = PublishPacket.build('/topic', b'data', 1, False, QOS_2, True)
self.assertEquals(packet.packet_id, 1)
self.assertFalse(packet.dup_flag)
self.assertEquals(packet.qos, QOS_2)
self.assertTrue(packet.retain_flag)
packet = PublishPacket.build('/topic', b'data', 1, True, QOS_0, True)
self.assertEquals(packet.packet_id, 1)
self.assertTrue(packet.dup_flag)
self.assertEquals(packet.qos, QOS_0)
self.assertTrue(packet.retain_flag)
packet = PublishPacket.build('/topic', b'data', 1, True, QOS_1, True)
self.assertEquals(packet.packet_id, 1)
self.assertTrue(packet.dup_flag)
self.assertEquals(packet.qos, QOS_1)
self.assertTrue(packet.retain_flag)
packet = PublishPacket.build('/topic', b'data', 1, True, QOS_2, True)
self.assertEquals(packet.packet_id, 1)
self.assertTrue(packet.dup_flag)
self.assertEquals(packet.qos, QOS_2)
self.assertTrue(packet.retain_flag)