测试:GoogleTest 全面单测(10工况设备表/故障检测/协议/消息/SQLite读回)+ UDP→SQLite 集成测试,src 零改动
build-test-deploy / ci (push) Failing after 11m45s

This commit is contained in:
zjk
2026-08-14 21:29:57 +08:00
parent f51a3ac750
commit de298414ff
14 changed files with 1286 additions and 13 deletions
+107
View File
@@ -0,0 +1,107 @@
//=======================================================================
// UpmsgTest: 上位机/外部通信 JSON 消息解析与序列化往返
// 仅链接现有 upmsg/*.h + upmsg_definitions.cpp。
// 注意:部分 upmsg 头文件未包含 json/loguru/pmSysvariable,需先包含。
//=======================================================================
#include <gtest/gtest.h>
#include "json/json.h"
#include "logc/loguru.hpp"
#include "pmSysvariable.h"
#include "upmsg/uPower_sysState.h"
#include "upmsg/uExternComm_setOpMode.h"
#include "upmsg/uExternComm_setOpCondition.h"
#include "upmsg/uExternComm_setPowerSystem.h"
#include "upmsg/uExternComm_setDeviceSwitch.h"
#include "upmsg/uPlan_taskStart.h"
#include "upmsg/uPlan_planStop.h"
#include "upmsg/uDetect_xcVoltage_cmd.h"
#include "upmsg/uDetect_zdpVoltage_cmd.h"
TEST(UpmsgTest, PowerSysStateParse)
{
uPower_sysStateMsg msg;
MSControlCmd cmd;
EXPECT_TRUE(msg.parseControlCmdFromJson(cmd, R"({"powerCMD":1,"modCMD":2,"workCMD":5})"));
EXPECT_EQ(cmd.powerCMD, 1u);
EXPECT_EQ(cmd.modCMD, 2u);
EXPECT_EQ(cmd.workCMD, 5u);
// 缺字段 → false
EXPECT_FALSE(msg.parseControlCmdFromJson(cmd, R"({"powerCMD":1})"));
// 非法 JSON → false
EXPECT_FALSE(msg.parseControlCmdFromJson(cmd, "{bad json"));
}
TEST(UpmsgTest, SetOpMode)
{
uExternComm_setOpModeMsg msg;
EXPECT_EQ(msg.getSetOpMode("uExternComm_setOpMode_cmd", R"({"state_uint8":1})"), 1);
EXPECT_EQ(msg.getSetOpMode("uExternComm_setOpMode_cmd", R"({})"), -1);
EXPECT_EQ(msg.getSetOpMode("wrong_key", R"({"state_uint8":1})"), 0); // key 不匹配 → 0
}
TEST(UpmsgTest, SetOpCondition)
{
uExternComm_setOpConditionMsg msg;
EXPECT_EQ(msg.getSetOpCondition("uExternComm_setOpCondition_cmd", R"({"state_uint8":7})"), 7);
EXPECT_EQ(msg.getSetOpCondition("uExternComm_setOpCondition_cmd", R"({})"), -1);
}
TEST(UpmsgTest, SetPowerSystem)
{
uExternComm_setPowerSystemMsg msg;
EXPECT_EQ(msg.getSetPMSys("uExternComm_setPowerSystem_cmd", R"({"powerCmd_uint8":4})"), 4);
EXPECT_EQ(msg.getSetPMSys("uExternComm_setPowerSystem_cmd", R"({})"), -1);
}
TEST(UpmsgTest, SetDeviceSwitch)
{
uExternComm_setDeviceSwitchMsg msg;
DeviceSwitchCmd c = msg.getSetDevSwitch("uExternComm_setDeviceSwitch_cmd",
R"({"id_uint8":53,"cmd_uint8":1})");
EXPECT_EQ(c.id, 53);
EXPECT_EQ(c.cmd, 1);
// 空对象 → id=-1
DeviceSwitchCmd c2 = msg.getSetDevSwitch("uExternComm_setDeviceSwitch_cmd", R"({})");
EXPECT_EQ(c2.id, -1);
}
TEST(UpmsgTest, TaskStart)
{
uPlan_taskStartMsg msg;
MissionState m = msg.getMission("uPlan_taskStart_st",
R"({"taskType_str":"sail","balanceEnabled_bool":true,"bowRudderUnfold_bool":false})");
EXPECT_EQ(m.type, (int)TaskType::SAIL);
EXPECT_TRUE(m.enableBuoyancyAdjustment);
EXPECT_FALSE(m.enableBowRudder);
}
TEST(UpmsgTest, TaskStop)
{
uPlan_planStopMsg msg;
EXPECT_TRUE(msg.getTaskStop("uPlan_planStop_st", R"({"op_int32":1})"));
EXPECT_FALSE(msg.getTaskStop("uPlan_planStop_st", R"({"op_int32":0})"));
EXPECT_FALSE(msg.getTaskStop("uPlan_planStop_st", R"({})"));
}
TEST(UpmsgTest, XcVoltageRoundTrip)
{
uDetect_xcVoltage_cmd cmd;
cmd.xcLowVoltageAdd_int32 = 1;
cmd.xcHighVoltageAdd_int32 = 2;
std::string json = cmd.toJsonString();
uDetect_xcVoltage_cmd cmd2;
EXPECT_TRUE(cmd2.fromJsonString(json));
EXPECT_EQ(cmd2.xcLowVoltageAdd_int32, 1);
EXPECT_EQ(cmd2.xcHighVoltageAdd_int32, 2);
EXPECT_FALSE(cmd2.fromJsonString("{bad json"));
}
TEST(UpmsgTest, ZdpVoltageRoundTrip)
{
uDetect_zdpVoltage_cmd cmd;
cmd.zdpVoltageAdd_int32 = 2;
std::string json = cmd.toJsonString();
uDetect_zdpVoltage_cmd cmd2;
EXPECT_TRUE(cmd2.fromJsonString(json));
EXPECT_EQ(cmd2.zdpVoltageAdd_int32, 2);
}