#!/usr/bin/env python3 # -*- coding: utf-8 -*- """IEC 60870-5-104 被控站协议栈(B4)主机侧单元测试运行器(L0.5,纯标准库)。 做什么:用本机 MSVC 离线编译 test/host/iec104/iec104_test.c(#include 纳入 生产源文件 iec104_asdu.c + iec104_pts.c + iec104_link.c,及数据源链接 依赖 prot_set.c + prot_elm.c + phasor.c + sample_ring.c),验证 APCI 重组 / STARTDT 握手 / 总召分片 / COV / k-w-t1~t3 / 遥控与定值两段式 / C_RD / C_CS / 错误应答(EVI)。 用法(仓库根目录): & '.venv\\Scripts\\python.exe' test/host/iec104/run_unit_test.py 退出码:0=PASS / 1=测试失败 / 2=环境错误。 设计依据:docs/子系统设计/IEC104上行设计说明.md §7(测试方案)。 创建日期: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="IEC104 Tests", src=os.path.join(HERE, "iec104_test.c"), include_dirs=[ os.path.join(ROOT, "App", "algo"), os.path.join(ROOT, "App", "protocol", "iec104"), HERE, ], summary_marker="=== IEC104 Tests:", ) if __name__ == "__main__": sys.exit(run_host_unit_test(BUILD))