#!/usr/bin/env python3 # -*- coding: utf-8 -*- """SOE 记录编解码(B9)主机侧纯逻辑单元测试运行器(纯标准库)。 做什么:用本机 MSVC 离线编译 test/host/soe/soe_test.c(#include 纳入 生产源文件 soe_rec.c + iec104_asdu.c),验证 64B 定长记录构建/解析 往返、sum8 校验和硬门槛、CP56Time2a 时标编码(与 iec104 解码器交叉 互证)、IV 语义、钳位、结构不变量。 用法(仓库根目录): & '.venv\\Scripts\\python.exe' test/host/soe/run_unit_test.py 退出码:0=PASS / 1=测试失败 / 2=环境错误。 设计依据:docs/算法/继电保护功能复现规划.md §3.4(SOE 记录 / 动作记录,B9)。 创建日期:2026-10-12 """ import os import sys HERE = os.path.dirname(os.path.abspath(__file__)) ROOT = os.path.dirname(os.path.dirname(os.path.dirname(HERE))) sys.path.insert(0, os.path.join(ROOT, "test", "host", "common")) from unit_test_harness import TestBuild, run_host_unit_test # noqa: E402 BUILD = TestBuild( name="SOE Record Tests", src=os.path.join(HERE, "soe_test.c"), include_dirs=[ os.path.join(ROOT, "App", "log"), os.path.join(ROOT, "App", "protocol", "iec104"), HERE, ], summary_marker="=== SOE Tests:", ) if __name__ == "__main__": sys.exit(run_host_unit_test(BUILD))