#!/usr/bin/env python3 """s10_robot 协议层单元测试(不连机器人)。 运行:: uv run python -m unittest discover -s tests -v """ from __future__ import annotations import json import struct import sys import threading import unittest from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) import s10_robot as s10 from s10_robot import ( C_AXIS, C_HEARTBEAT, C_STATUS, FMT_JSON, HEADER_LEN, SYNC, T_HEARTBEAT, T_FAULT, T_MOTION, Frame, S10Client, S10CommandError, build_asdu, build_frame, parse_frames, ) def make_frame(type_: int, command: int, items: dict, report_id: int = 0) -> bytes: return build_frame(build_asdu(type_, command, items), report_id) class FrameTest(unittest.TestCase): def test_header_layout(self): asdu = build_asdu(0x00100064, 5, {}) packet = build_frame(asdu, report_id=0x1234) self.assertEqual(packet[:4], SYNC) self.assertEqual(len(packet), HEADER_LEN + len(asdu)) length, rid = struct.unpack_from("