47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
import os
|
|
import sys
|
|
import unittest
|
|
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from protocol import ( # noqa: E402
|
|
pack_report,
|
|
pack_slot_config,
|
|
unpack_report,
|
|
unpack_slot_config,
|
|
)
|
|
|
|
|
|
class ProtocolTests(unittest.TestCase):
|
|
def test_report_roundtrip(self):
|
|
raw = pack_report(85, 0x05, 1234)
|
|
self.assertEqual(len(raw), 4)
|
|
r = unpack_report(raw)
|
|
self.assertIsNotNone(r)
|
|
self.assertEqual(r.battery, 85)
|
|
self.assertEqual(r.flags, 0x05)
|
|
self.assertEqual(r.dist, 1234)
|
|
|
|
def test_report_le_dist(self):
|
|
raw = pack_report(0, 0, 0xABCD)
|
|
self.assertEqual(raw[2], 0xCD)
|
|
self.assertEqual(raw[3], 0xAB)
|
|
|
|
def test_bad_length(self):
|
|
self.assertIsNone(unpack_report(b""))
|
|
self.assertIsNone(unpack_report(b"\x00\x00\x00"))
|
|
self.assertIsNone(unpack_report(b"\x00" * 5))
|
|
|
|
def test_slot_config_roundtrip(self):
|
|
raw = pack_slot_config(2, 0x03, 30)
|
|
c = unpack_slot_config(raw)
|
|
self.assertIsNotNone(c)
|
|
self.assertEqual(c.slot, 2)
|
|
self.assertEqual(c.flags, 0x03)
|
|
self.assertEqual(c.period_s, 30)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|