4.0 KiB
4.0 KiB
DataRouter 单元测试用例文档
测试环境
| 项目 | 内容 |
|---|---|
| 语言标准 | C11 |
| 编译器 | GCC 11.4.0 |
| 测试框架 | 自定义轻量框架(宏 + goto cleanup) |
| 构建系统 | CMake ≥ 3.10 |
| 发送能力 | sensor / status |
| 接收能力 | rtcm / command |
运行方式
cmake -S . -B build
cmake --build build
ctest --test-dir build
./build/test_datarouter
测试用例列表
1. 未初始化(1 个)
| # | 测试名 | 描述 | 步骤 | 预期 |
|---|---|---|---|---|
| 1 | error_uninit |
未 init 时发送 | send_sensor("d", 1) |
返回 -1 |
2. 端口管理(4 个)
| # | 测试名 | 描述 | 步骤 | 预期 |
|---|---|---|---|---|
| 2 | port_create_basic |
基本创建 | port_create() |
返回 ≥ 0 |
| 3 | port_create_max |
满容量 64 | 循环创建到满再尝试 | 64 个成功,第 65 个 INVALID |
| 4 | port_delete_invalid |
删除无效 ID | delete(-1) + delete(999) |
不崩溃 |
| 5 | port_default_state |
默认状态 | 新建端口,查 send_type / handler count | send_type=-1, count=0 |
3. send_type 与 handler(3 个)
| # | 测试名 | 描述 | 步骤 | 预期 |
|---|---|---|---|---|
| 6 | send_type_set_get |
设置并清除 send_type | set_send_type(sensor) → get → set(-1) → get |
sensor → -1 |
| 7 | handler_add_remove |
添加后移除 handler | add(h) count=1 → remove(h) count=0 | count 正确 |
| 8 | handler_clear |
清除全部 handler | add → clear | count == 0 |
4. 发送 — 自动广播(11 个)
| # | 测试名 | 描述 | 步骤 | 预期 |
|---|---|---|---|---|
| 9 | send_no_match_port |
无匹配端口 | 不创建任何端口,直接 send_sensor |
返回 -2 |
| 10 | send_one_port_one_handler |
单端口单 handler | 创建端口中 send_type + add(h) → send | 返回 0;handler 1 次 |
| 11 | send_one_port_multi_handler |
单端口双 handler | add(h) + add(h2) → send | handler 2 次 |
| 12 | send_multi_ports_same_type |
两端口同类型 | p1(sensor,h) + p2(sensor,h) → send | handler 2 次,各端口一次 |
| 13 | send_multi_port_multi_handler |
多端口多 handler | p1(h,h2) + p2(h3) → send | handler 3 次 |
| 14 | send_type_filter |
类型过滤 | p1(sensor,h) + p2(status,h) → send_sensor |
只触发 p1 |
| 15 | send_after_remove_handler |
移除 handler 后 | add(h) → send count=1 → remove(h) → send | 第二次返回 -2 |
| 16 | send_after_delete_port |
删除端口后 | 创建→设好→删除→send | 返回 -2 |
| 17 | send_zero_length |
零长度数据 | send("x", 0) | 返回 0;handler 被调 |
| 18 | send_null_data |
NULL 数据 | send(NULL, 0) | 返回 0;handler 被调 |
| 19 | send_multi_cap |
多能力独立 | p1(sensor) + p2(status) → 分别 send_sensor + send_status | 各触发匹配的端口 |
5. 接收回调(1 个)
| # | 测试名 | 描述 | 步骤 | 预期 |
|---|---|---|---|---|
| 20 | recv_callback |
用户实现接收回调 | on_recv_rtcm(0, "d", 1) |
回调被触发 |
6. 能力元数据(2 个)
| # | 测试名 | 描述 | 步骤 | 预期 |
|---|---|---|---|---|
| 21 | send_cap_meta |
发送能力元数据 | count / name / desc / 边界 | SEND 两组正确 |
| 22 | recv_cap_meta |
接收能力元数据 | count / name / desc / 边界 | RECV 两组正确 |
覆盖矩阵
| 功能模块 | 用例数 | 主要验证点 |
|---|---|---|
| 未初始化 | 1 | send → -1 |
| 端口管理 | 4 | 创建/满容量/删除异常/默认状态 |
| send_type & handler | 3 | 设置/清除/添加/移除/清空 |
| 发送自动广播 | 11 | 无匹配/单播/多 handler 单端口/多端口同类型/多端口多 handler/类型过滤/移除后/删除后/零长/NULL/多能力独立 |
| 接收回调 | 1 | 用户实现覆盖弱符号 |
| 能力元数据 | 2 | SEND 与 RECV 两组独立查询 |
总计:22 个测试用例