测试:GoogleTest 全面单测(10工况设备表/故障检测/协议/消息/SQLite读回)+ UDP→SQLite 集成测试,src 零改动
build-test-deploy / ci (push) Failing after 11m45s
build-test-deploy / ci (push) Failing after 11m45s
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
//=======================================================================
|
||||
// SqliteTest(gtest): 验证 SQLite 封装 10 个 insertData 写入正确。
|
||||
// 不改动 SQLite 封装;用裸 sqlite3 打开同一文件读回验证。
|
||||
//=======================================================================
|
||||
#include <gtest/gtest.h>
|
||||
#include <cstdio>
|
||||
#include <string>
|
||||
#include <unistd.h>
|
||||
#include "sqlit3/SQLite.h"
|
||||
#include "sqlit3/sqlite3.h"
|
||||
|
||||
static std::string tmpPath(const char* name) {
|
||||
return std::string("/tmp/pmsqlite_") + name + "_" + std::to_string(::getpid()) + ".db";
|
||||
}
|
||||
|
||||
static bool rawQueryInt(const std::string& path, const std::string& sql, long long& out) {
|
||||
sqlite3* db = nullptr;
|
||||
if (sqlite3_open(path.c_str(), &db) != SQLITE_OK) return false;
|
||||
sqlite3_stmt* stmt = nullptr;
|
||||
bool ok = false;
|
||||
if (sqlite3_prepare_v2(db, sql.c_str(), -1, &stmt, nullptr) == SQLITE_OK) {
|
||||
if (sqlite3_step(stmt) == SQLITE_ROW) { out = sqlite3_column_int64(stmt, 0); ok = true; }
|
||||
}
|
||||
if (stmt) sqlite3_finalize(stmt);
|
||||
sqlite3_close(db);
|
||||
return ok;
|
||||
}
|
||||
|
||||
static bool rawCount(const std::string& path, const std::string& table, long long& out) {
|
||||
return rawQueryInt(path, "SELECT COUNT(*) FROM " + table, out);
|
||||
}
|
||||
|
||||
TEST(SqliteTest, InsertCcuStateReadBack)
|
||||
{
|
||||
std::string path = tmpPath("ccu");
|
||||
{
|
||||
SQLite db(path);
|
||||
ASSERT_TRUE(db.createTable());
|
||||
ccuState c{}; c.ins_soc = 42; c.dyn_soc = 66; c.fc_status = 4;
|
||||
EXPECT_TRUE(db.insertData(c));
|
||||
}
|
||||
long long v = 0;
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT ins_soc FROM ccuState ORDER BY id DESC LIMIT 1", v));
|
||||
EXPECT_EQ(v, 42);
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT dyn_soc FROM ccuState ORDER BY id DESC LIMIT 1", v));
|
||||
EXPECT_EQ(v, 66);
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT fc_status FROM ccuState ORDER BY id DESC LIMIT 1", v));
|
||||
EXPECT_EQ(v, 4);
|
||||
std::remove(path.c_str());
|
||||
}
|
||||
|
||||
TEST(SqliteTest, InsertDisHighVolBusStateReadBack)
|
||||
{
|
||||
std::string path = tmpPath("dihv");
|
||||
{
|
||||
SQLite db(path);
|
||||
ASSERT_TRUE(db.createTable());
|
||||
disHighVolBusState s{};
|
||||
s.fuelCellCircuitBreaker = 1;
|
||||
s.powerBusVoltage = 5200;
|
||||
EXPECT_TRUE(db.insertData(s));
|
||||
}
|
||||
long long v = 0;
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT fuelCellCircuitBreaker FROM disHighVolBusState ORDER BY id DESC LIMIT 1", v));
|
||||
EXPECT_EQ(v, 1);
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT powerBusVoltage FROM disHighVolBusState ORDER BY id DESC LIMIT 1", v));
|
||||
EXPECT_EQ(v, 5200);
|
||||
std::remove(path.c_str());
|
||||
}
|
||||
|
||||
TEST(SqliteTest, InsertDisHighAVolBusStateReadBack)
|
||||
{
|
||||
std::string path = tmpPath("dihva");
|
||||
{
|
||||
SQLite db(path); ASSERT_TRUE(db.createTable());
|
||||
disHighAVolBusState s{}; s.bowFTDevice123CircuitBreaker = 1; s.busbarBVoltage = 100;
|
||||
EXPECT_TRUE(db.insertData(s));
|
||||
}
|
||||
long long v = 0;
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT bowFTDevice123CircuitBreaker FROM disHighAVolBusState", v));
|
||||
EXPECT_EQ(v, 1);
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT busbarBVoltage FROM disHighAVolBusState", v));
|
||||
EXPECT_EQ(v, 100);
|
||||
std::remove(path.c_str());
|
||||
}
|
||||
|
||||
TEST(SqliteTest, InsertDisLowMainBusStateReadBack)
|
||||
{
|
||||
std::string path = tmpPath("dilmb");
|
||||
{
|
||||
SQLite db(path); ASSERT_TRUE(db.createTable());
|
||||
disLowMainBusState s{}; s.unit4InstrumentDC48VCircuitBreaker = 1;
|
||||
EXPECT_TRUE(db.insertData(s));
|
||||
}
|
||||
long long v = 0;
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT unit4InstrumentDC48VCircuitBreaker FROM disLowMainBusState", v));
|
||||
EXPECT_EQ(v, 1);
|
||||
std::remove(path.c_str());
|
||||
}
|
||||
|
||||
TEST(SqliteTest, InsertDisLowBusStateReadBack)
|
||||
{
|
||||
std::string path = tmpPath("dilb");
|
||||
{
|
||||
SQLite db(path); ASSERT_TRUE(db.createTable());
|
||||
disLowBusState s{}; s.unit1CircuitBreaker = 1;
|
||||
EXPECT_TRUE(db.insertData(s));
|
||||
}
|
||||
long long v = 0;
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT unit1CircuitBreaker FROM disLowBusState", v));
|
||||
EXPECT_EQ(v, 1);
|
||||
std::remove(path.c_str());
|
||||
}
|
||||
|
||||
TEST(SqliteTest, InsertCommandsReadBack)
|
||||
{
|
||||
std::string path = tmpPath("cmd");
|
||||
{
|
||||
SQLite db(path); ASSERT_TRUE(db.createTable());
|
||||
ccuColCmd cc{}; cc.heartbeat = 5; EXPECT_TRUE(db.insertData(cc));
|
||||
disHighVolBusCmd c1{}; c1.dcdc5Module = 1; c1.coolingSystem = 1; EXPECT_TRUE(db.insertData(c1));
|
||||
disHighAVolBusCmd c2{}; c2.xczCircuitBreaker = 1; EXPECT_TRUE(db.insertData(c2));
|
||||
disLowMainBusCmd c3{}; c3.dcC1DCDistributionPanelCircuitBreaker = 1; EXPECT_TRUE(db.insertData(c3));
|
||||
disLowBusCmd c4{}; c4.unit2CircuitBreaker = 1; EXPECT_TRUE(db.insertData(c4));
|
||||
}
|
||||
long long v = 0;
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT heartbeat FROM ccuColCmd", v)); EXPECT_EQ(v, 5);
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT dcdc5Module FROM disHighVolBusCmd", v)); EXPECT_EQ(v, 1);
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT xczCircuitBreaker FROM disHighAVolBusCmd", v)); EXPECT_EQ(v, 1);
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT dcC1DCDistributionPanelCircuitBreaker FROM disLowMainBusCmd", v)); EXPECT_EQ(v, 1);
|
||||
EXPECT_TRUE(rawQueryInt(path, "SELECT unit2CircuitBreaker FROM disLowBusCmd", v)); EXPECT_EQ(v, 1);
|
||||
std::remove(path.c_str());
|
||||
}
|
||||
|
||||
TEST(SqliteTest, MultipleInsertsCount)
|
||||
{
|
||||
std::string path = tmpPath("multi");
|
||||
{
|
||||
SQLite db(path); ASSERT_TRUE(db.createTable());
|
||||
ccuState c{}; c.ins_soc = 10;
|
||||
EXPECT_TRUE(db.insertData(c));
|
||||
EXPECT_TRUE(db.insertData(c));
|
||||
EXPECT_TRUE(db.insertData(c));
|
||||
}
|
||||
long long n = 0;
|
||||
EXPECT_TRUE(rawCount(path, "ccuState", n));
|
||||
EXPECT_EQ(n, 3);
|
||||
std::remove(path.c_str());
|
||||
}
|
||||
Reference in New Issue
Block a user