traces
This commit is contained in:
33
tests/test_ccu_emulator.py
Normal file
33
tests/test_ccu_emulator.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import unittest
|
||||
|
||||
from ccu_emulator.frames import ACTIVE_SEED_COMMAND0, NEUTRAL_ACK_FRAME, build_frame, frame_checksum_ok
|
||||
from ccu_emulator.policy import AckPolicy
|
||||
from ccu_emulator.refresh import PeriodicRefresh
|
||||
|
||||
|
||||
class CcuEmulatorFrameTests(unittest.TestCase):
|
||||
def test_build_frame_adds_checksum(self):
|
||||
self.assertEqual(build_frame(0x00, 0x0000, 0x8080), ACTIVE_SEED_COMMAND0)
|
||||
self.assertTrue(frame_checksum_ok(build_frame(0x06, 0x0015, 0x0001)))
|
||||
|
||||
def test_ack_policy_acknowledges_reports_with_neutral_ack(self):
|
||||
decision = AckPolicy().decide(bytes.fromhex("02000200005A"), "connect_ok_path_response_candidate")
|
||||
self.assertTrue(decision.should_ack)
|
||||
self.assertEqual(decision.frame, NEUTRAL_ACK_FRAME)
|
||||
|
||||
def test_ack_policy_skips_table_readback(self):
|
||||
decision = AckPolicy().decide(bytes.fromhex("04000080805E"), "table_readback_candidate")
|
||||
self.assertFalse(decision.should_ack)
|
||||
|
||||
|
||||
class PeriodicRefreshTests(unittest.TestCase):
|
||||
def test_periodic_refresh_returns_due_frames(self):
|
||||
refresh = PeriodicRefresh(frames=[ACTIVE_SEED_COMMAND0], interval=0.5)
|
||||
refresh.start(now=10.0)
|
||||
self.assertEqual(refresh.due_frames(now=10.4), [])
|
||||
self.assertEqual(refresh.due_frames(now=10.5), [ACTIVE_SEED_COMMAND0])
|
||||
self.assertEqual(refresh.due_frames(now=10.6), [])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user