Files
soundtower-controller/tests/test_session.py
T
lda Verified 038e152bbc
Checks / tests (ubuntu-latest, 3.11) (push) Canceled after 0s
Checks / tests (ubuntu-latest, 3.14) (push) Canceled after 0s
Checks / tests (windows-latest, 3.11) (push) Canceled after 0s
Checks / tests (windows-latest, 3.14) (push) Canceled after 0s
Checks / package (push) Canceled after 0s
Add MX-T40 BLE desktop controller and protocol documentation
2026-10-25 04:43:47 +07:00

35 lines
1.4 KiB
Python

"""Exercise the session interface without a thread or transport."""
import unittest
from controller.session import Session
INFO = bytes.fromhex("00 bb 01 1d 00 0b 02 10 01 34 30 04 01 02 04 05 01 b0")
class SessionTests(unittest.TestCase):
def test_captured_handshake_with_split_reply(self):
session = Session()
self.assertEqual(session.start(), bytes.fromhex("00 bb 01 01 00 01 01 04"))
self.assertFalse(session.receive(INFO[:9]).outgoing)
update = session.receive(INFO[9:])
self.assertEqual(update.outgoing, (bytes.fromhex("00 bb 01 02 00 01 04 08"),))
self.assertFalse(session.ready)
update = session.receive(bytes.fromhex("00 bb 00 02 00 00 02"))
self.assertTrue(update.became_ready)
self.assertTrue(session.ready)
self.assertFalse(session.receive(bytes.fromhex("00 bb 00 02 00 00 02")).became_ready)
def test_notification_sequence_cannot_complete_handshake(self):
session = Session()
session.start()
session.receive(INFO)
session.receive(bytes.fromhex("00 bb 01 02 00 02 31 01 36"))
self.assertFalse(session.ready)
def test_repeated_info_does_not_repeat_link_complete(self):
session = Session()
session.start()
self.assertEqual(len(session.receive(INFO).outgoing), 1)
self.assertEqual(session.receive(INFO).outgoing, ())