DataRouter 单元测试用例文档
测试环境
| 项目 |
内容 |
| 语言标准 |
C11 |
| 编译器 |
GCC 11.4.0 |
| 测试框架 |
自定义轻量框架(宏 + goto cleanup) |
| 构建系统 |
CMake ≥ 3.10 |
| 发送能力 |
sensor / status |
| 接收能力 |
rtcm / command |
运行方式
测试用例列表
1. 未初始化(1 个)
| # |
测试名 |
描述 |
步骤 |
预期 |
| 1 |
error_uninit |
未 init 时发送 |
dr_send_sensor("d", 1) |
返回 -1 |
2. 端口管理(4 个)
| # |
测试名 |
描述 |
步骤 |
预期 |
| 2 |
port_create_basic |
基本创建 |
dr_port_create() |
返回 ≥ 0 |
| 3 |
port_create_max |
满容量 64 |
循环到满 |
第 65 个 INVALID |
| 4 |
port_delete_invalid |
删除无效 ID |
delete(-1) + delete(999) |
不崩溃 |
| 5 |
port_default_state |
默认状态 |
查 send_type / recv_type / count |
均为 -1 / 0 |
3. send_type / recv_type / handler(4 个)
| # |
测试名 |
描述 |
步骤 |
预期 |
| 6 |
send_type_set_clear |
设置并清除 send_type |
set(sensor) → get → set(-1) → get |
sensor → -1 |
| 7 |
recv_type_set_clear |
设置并清除 recv_type |
set(rtcm) → get → set(-1) → get |
rtcm → -1 |
| 8 |
types_independent |
收发类型独立设置 |
同时 set_send(sensor) + set_recv(command) |
各自返回正确值 |
| 9 |
handler_add_remove |
添加后移除 handler |
add(h) → count=1 → remove(h) → count=0 |
正确 |
4. 发送 — 自动广播(7 个)
| # |
测试名 |
描述 |
步骤 |
预期 |
| 10 |
send_no_match_port |
无匹配端口 |
不创建端口直接 send |
返回 -2 |
| 11 |
send_one_port_one_handler |
单端口单 handler |
send_type + add → send |
0,handler 1 次 |
| 12 |
send_multi_ports |
两端口同类型 |
p1(sensor) + p2(sensor) → send |
handler 2 次 |
| 13 |
send_type_filter |
类型过滤 |
p1(sensor) + p2(status) → send_sensor |
只触发 p1 |
| 14 |
send_after_delete |
删除端口后 send |
创建→设好→删除→send |
返回 -2 |
| 15 |
send_zero_length |
零长度数据 |
send("x", 0) |
0,handler 被调 |
| 16 |
send_null_data |
NULL 数据 |
send(NULL, 0) |
0,handler 被调 |
5. 接收回调 + dispatch(6 个)
| # |
测试名 |
描述 |
步骤 |
预期 |
| 17 |
recv_callback_direct |
直接调用回调 |
dr_on_recv_rtcm() + dr_on_recv_command() |
各自触发 |
| 18 |
dispatch_valid |
dispatch 自动路由 rtcm |
set_recv(rtcm) → dispatch(port, data) |
dr_on_recv_rtcm 触发 |
| 19 |
dispatch_command |
dispatch 自动路由 command |
set_recv(command) → dispatch(port, data) |
dr_on_recv_command 触发 |
| 20 |
dispatch_unset |
recv_type 未设置 |
recv_type=-1 → dispatch |
无回调触发 |
| 21 |
dispatch_invalid_port |
无效端口 dispatch |
dispatch(999/-1, ...) |
无回调触发 |
| 22 |
dispatch_deleted_port |
已删端口 dispatch |
创建→设置→删除→dispatch |
无回调触发 |
6. 能力元数据(2 个)
| # |
测试名 |
描述 |
步骤 |
预期 |
| 23 |
send_cap_meta |
发送能力元数据 |
count / name / 边界 |
正确 |
| 24 |
recv_cap_meta |
接收能力元数据 |
count / name / 边界 |
正确 |
覆盖矩阵
| 功能模块 |
用例数 |
主要验证点 |
| 未初始化 |
1 |
send → -1 |
| 端口管理 |
4 |
创建/满容量/删除/默认状态 |
| 收发类型 & handler |
4 |
send_type/recv_type 独立设置、handler 增删 |
| 发送自动广播 |
7 |
单播/多播/过滤/删除后/零长/NULL |
| 接收 dispatch |
6 |
直接回调/有效路由/无效路由/未设置/无效端口/已删除 |
| 能力元数据 |
2 |
两组独立查询 |
总计:24 个测试用例