Files
STM32F4-Base/test/host/meas/run_unit_test.py
T
wandering1 ae09c5737a docs: 删任务规划两份已完成文档,数据可信内容迁入算法层/硬件平台/登记簿
任务规划目录从 5 个文件收敛到 3 个:只留导航(README)、待办(登记簿)、
暂缓专项(暂缓-RS485)。

删除的两个文件都不再有现行读者:
- UI补齐.md 执行清单 2026-10-28 清空、上板判据 2026-11-06 台架轮已复核;
  叶数口径迁 docs/UI设计/菜单页面设计.md §3.9,三条内容页硬规矩迁
  docs/UI设计/内容页架构.md §7.1,两条未闭环待办迁登记簿 §7/§8。
- 数据可信.md 不是完成记录,而是被约 130 处代码头注释引用的设计约束,
  因此按内容分三处落位后删除,不整篇丢弃。

数据可信内容的新归属(旧节号 → 新家):
- §2/§4 设计口径 → docs/算法/采集与算法层设计说明.md 新增 §13(13 小节),
  §7 前置决策表 → §13.12 已定案的前置决策。
- §3 台阶与波次退出判据 → docs/硬件平台/ADC通道映射说明.md 新增 §9。
- §5 任务卡 → docs/任务规划/登记簿.md §7(拆成变比确认 / 两点标定两行)。

引用改写 34 文件 77 处路径引用 + 14 文件 24 处昵称引用 + 双重节号 35 处,
覆盖代码头注释、测试、生成器与文档;归档区历史路径改纯文本提及。
四个 SVG 生成器文案同步并重跑,产物随脚本同批提交。

同批处理两件事:
- 9 个 UTF-16 LE 证据文件转 UTF-8。end-of-file-fixer 按字节判末尾换行,
  UTF-16 的换行是 0A 00、末字节 00,钩子会追加裸 0x0a 使文件变奇数长度,
  8 个已实际损坏。转码后逐文件比对 HEAD 原文验证正文零丢失。
- 修回 App/cfg/cfg_file.c 被剥掉的 UTF-8 BOM(补 3 字节,未整文件重写)。

验证:/keil-build 0 错误 0 警告(Code=255160);check_doc_links --all
--sections-strict 221 篇全通过、无法判定 0;pre-commit 全量全 Passed。
2026-11-09 16:13:57 +08:00

50 lines
2.2 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""遥测快照层(全周傅氏相量发布侧,meas)主机侧纯逻辑单元测试运行器(纯标准库)。
做什么:
用本机 MSVC 编译 test/host/meas/meas_test.c(它以 #include 纳入
**生产源文件** App/algo/meas.c + phasor.c + sample_ring.c),在 PC 上离线
跑 200 ms 遥测快照的:§4.5 布局钉死 / seq 只增 / 双区切换无撕裂 /
基波有效值与 phasor 使用区同拍同值 / 品质汇总(CLIPPED 位图)/ TEMP 透传 /
采样环回绕连续性,失败即非 0 退出。零硬件、零烧录、毫秒级。
工具链探测 / 编译运行全部委托 test/host/common/unit_test_harness.py。
为什么要主机侧单测(而不是只等台架):
遥测快照发布(docs/算法/采集与算法层设计说明.md §13)判据一半是并发与结构类——双区撕裂窗在
台架上不可观测,削顶品质要等两点标定才真实出现;读数与注入源比对类
判据仍归台架(实测采样类,本套件不覆盖)。
本层为纯算法:无寄存器、无 RTOS、无文件/外设依赖,**不需要任何桩目录**。
用法(仓库根目录):
python test/host/meas/run_unit_test.py
退出码:0=PASS / 1=测试失败 / 2=环境错误。
设计依据:docs/算法/采集与算法层设计说明.md §13 遥测快照发布(道D,§4.5 快照布局);
创建日期:2026-10-25
"""
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
# 无桩目录:meas.c / phasor.c / sample_ring.c 仅依赖 stdint/stddef/math 与
# App/algo 内的头(adc_input.h 为纯枚举 + 声明,可主机编译)。
BUILD = TestBuild(
name="Meas Layer Tests",
src=os.path.join(HERE, "meas_test.c"),
include_dirs=[
os.path.join(ROOT, "App", "algo"),
HERE,
],
summary_marker="=== Meas Layer Tests:",
)
if __name__ == "__main__":
sys.exit(run_host_unit_test(BUILD))