Compare commits

...

1 Commits

Author SHA1 Message Date
lids 32fc0107d6 AI 自动生成测试用例 2026-04-24 17:32:35 +08:00
1 changed files with 233 additions and 0 deletions

View File

@ -0,0 +1,233 @@
#include <gtest/gtest.h>
#include <memory>
#include <algorithm>
#include "alert_manager.hpp"
using namespace std;
namespace {
// 辅助函数:比较 AlertInfo 是否相等(忽略时间戳)
bool isEqualAlertInfo(const AlertInfo& a, const AlertInfo& b) {
return a.type == b.type && a.status == b.status && a.description == b.description;
}
// 测试用例类
class AlertManagerTest : public ::testing::Test {
protected:
AlertManager manager;
void SetUp() override {
manager.initialize();
}
};
// 测试 checkAltitudeAlert 正常输入
TEST_F(AlertManagerTest, testCheckAltitudeAlertNormalInput) {
manager.setAltitudeThresholds(100.0f, 50.0f);
manager.checkAltitudeAlert(120.0f, 1000);
EXPECT_TRUE(manager.hasActiveAlerts());
EXPECT_EQ(manager.getActiveAlerts().size(), 1);
EXPECT_EQ(manager.getActiveAlerts()[0].type, AlertType::ALTITUDE_UPPER);
EXPECT_EQ(manager.getActiveAlerts()[0].status, AlertStatus::ACTIVE);
}
// 测试 checkAltitudeAlert 边界值(等于上限)
TEST_F(AlertManagerTest, testCheckAltitudeAlertBoundaryAtUpperLimit) {
manager.setAltitudeThresholds(100.0f, 50.0f);
manager.checkAltitudeAlert(100.0f, 1000);
EXPECT_FALSE(manager.hasActiveAlerts());
}
// 测试 checkAltitudeAlert 边界值(低于下限)
TEST_F(AlertManagerTest, testCheckAltitudeAlertBoundaryBelowLowerLimit) {
manager.setAltitudeThresholds(100.0f, 50.0f);
manager.checkAltitudeAlert(49.0f, 1000);
EXPECT_TRUE(manager.hasActiveAlerts());
EXPECT_EQ(manager.getActiveAlerts()[0].type, AlertType::ALTITUDE_LOWER);
}
// 测试 setAltitudeThresholds 正常输入
TEST_F(AlertManagerTest, testSetAltitudeThresholdsNormalInput) {
manager.setAltitudeThresholds(150.0f, 30.0f);
EXPECT_FLOAT_EQ(manager.getUpperThreshold(), 150.0f);
EXPECT_FLOAT_EQ(manager.getLowerThreshold(), 30.0f);
}
// 测试 setAltitudeThresholds 边界值(负数)
TEST_F(AlertManagerTest, testSetAltitudeThresholdsNegativeValues) {
manager.setAltitudeThresholds(-10.0f, -20.0f);
EXPECT_FLOAT_EQ(manager.getUpperThreshold(), -10.0f);
EXPECT_FLOAT_EQ(manager.getLowerThreshold(), -20.0f);
}
// 测试 triggerSensorFailure 正常输入
TEST_F(AlertManagerTest, testTriggerSensorFailureNormalInput) {
manager.triggerSensorFailure(2000);
EXPECT_TRUE(manager.hasActiveAlerts());
EXPECT_EQ(manager.getActiveAlerts()[0].type, AlertType::SENSOR_FAILURE);
EXPECT_EQ(manager.getActiveAlerts()[0].status, AlertStatus::ACTIVE);
}
// 测试 triggerLowBattery 正常输入(默认电量)
TEST_F(AlertManagerTest, testTriggerLowBatteryNormalInputDefaultLevel) {
manager.triggerLowBattery(3000);
EXPECT_TRUE(manager.hasActiveAlerts());
EXPECT_EQ(manager.getActiveAlerts()[0].type, AlertType::LOW_BATTERY);
EXPECT_EQ(manager.getActiveAlerts()[0].status, AlertStatus::ACTIVE);
EXPECT_EQ(manager.getActiveAlerts()[0].description, "Low battery: 20.0%")
;}
// 测试 triggerLowBattery 特殊场景(自定义电量)
TEST_F(AlertManagerTest, testTriggerLowBatteryCustomLevel) {
manager.triggerLowBattery(3000, 10.5f);
EXPECT_EQ(manager.getActiveAlerts()[0].description, "Low battery: 10.5%" );
}
// 测试 triggerCommunicationError 正常输入
TEST_F(AlertManagerTest, testTriggerCommunicationErrorNormalInput) {
manager.triggerCommunicationError(4000);
EXPECT_TRUE(manager.hasActiveAlerts());
EXPECT_EQ(manager.getActiveAlerts()[0].type, AlertType::COMMUNICATION_ERROR);
}
// 测试 acknowledgeAllAlerts 正常输入
TEST_F(AlertManagerTest, testAcknowledgeAllAlertsNormalInput) {
manager.triggerSensorFailure(5000);
manager.acknowledgeAllAlerts(6000);
EXPECT_FALSE(manager.hasUnacknowledgedAlerts());
EXPECT_TRUE(manager.getActiveAlerts()[0].isActive());
EXPECT_EQ(manager.getActiveAlerts()[0].status, AlertStatus::ACKNOWLEDGED);
}
// 测试 acknowledgeAlert 正常输入
TEST_F(AlertManagerTest, testAcknowledgeAlertNormalInput) {
manager.triggerLowBattery(7000);
manager.acknowledgeAlert(AlertType::LOW_BATTERY, 8000);
EXPECT_FALSE(manager.hasUnacknowledgedAlerts());
EXPECT_EQ(manager.getActiveAlerts()[0].status, AlertStatus::ACKNOWLEDGED);
}
// 测试 resetAlert 正常输入
TEST_F(AlertManagerTest, testResetAlertNormalInput) {
manager.triggerSensorFailure(9000);
manager.resetAlert(AlertType::SENSOR_FAILURE);
EXPECT_FALSE(manager.hasActiveAlerts());
EXPECT_EQ(manager.getActiveAlerts().size(), 0);
}
// 测试 resetAllAlerts 正常输入
TEST_F(AlertManagerTest, testResetAllAlertsNormalInput) {
manager.triggerSensorFailure(10000);
manager.triggerLowBattery(11000);
manager.resetAllAlerts();
EXPECT_FALSE(manager.hasActiveAlerts());
EXPECT_EQ(manager.getActiveAlerts().size(), 0);
}
// 测试 hasActiveAlerts 正常输入
TEST_F(AlertManagerTest, testHasActiveAlertsNormalInput) {
manager.triggerSensorFailure(12000);
EXPECT_TRUE(manager.hasActiveAlerts());
}
// 测试 hasActiveAlerts 边界值(无预警)
TEST_F(AlertManagerTest, testHasActiveAlertsNoAlerts) {
EXPECT_FALSE(manager.hasActiveAlerts());
}
// 测试 hasUnacknowledgedAlerts 正常输入
TEST_F(AlertManagerTest, testHasUnacknowledgedAlertsNormalInput) {
manager.triggerSensorFailure(13000);
EXPECT_TRUE(manager.hasUnacknowledgedAlerts());
}
// 测试 hasUnacknowledgedAlerts 边界值(已确认)
TEST_F(AlertManagerTest, testHasUnacknowledgedAlertsAfterAcknowledge) {
manager.triggerSensorFailure(14000);
manager.acknowledgeAllAlerts(15000);
EXPECT_FALSE(manager.hasUnacknowledgedAlerts());
}
// 测试 getActiveAlerts 正常输入
TEST_F(AlertManagerTest, testGetActiveAlertsNormalInput) {
manager.triggerSensorFailure(16000);
auto alerts = manager.getActiveAlerts();
EXPECT_EQ(alerts.size(), 1);
EXPECT_EQ(alerts[0].type, AlertType::SENSOR_FAILURE);
}
// 测试 getActiveAlerts 边界值(无活动预警)
TEST_F(AlertManagerTest, testGetActiveAlertsEmpty) {
auto alerts = manager.getActiveAlerts();
EXPECT_EQ(alerts.size(), 0);
}
// 测试 getAlertHistory 正常输入
TEST_F(AlertManagerTest, testGetAlertHistoryNormalInput) {
manager.triggerSensorFailure(17000);
manager.triggerLowBattery(18000);
auto history = manager.getAlertHistory(1);
EXPECT_EQ(history.size(), 1);
EXPECT_EQ(history[0].type, AlertType::LOW_BATTERY);
}
// 测试 getAlertHistory 边界值(超过最大历史数量)
TEST_F(AlertManagerTest, testGetAlertHistoryMaxCountExceeded) {
for (int i = 0; i < 10; ++i) {
manager.triggerSensorFailure(19000 + i);
}
auto history = manager.getAlertHistory(5);
EXPECT_EQ(history.size(), 5);
}
// 测试 getStatusDescription 正常输入
TEST_F(AlertManagerTest, testGetStatusDescriptionNormalInput) {
manager.triggerSensorFailure(20000);
string desc = manager.getStatusDescription();
EXPECT_NE(desc.find("1 active alert"), string::npos);
}
// 测试 getStatusDescription 边界值(无预警)
TEST_F(AlertManagerTest, testGetStatusDescriptionNoAlerts) {
string desc = manager.getStatusDescription();
EXPECT_EQ(desc, "No active alerts");
}
// 测试 clearHistory 正常输入
TEST_F(AlertManagerTest, testClearHistoryNormalInput) {
manager.triggerSensorFailure(21000);
manager.clearHistory();
EXPECT_EQ(manager.getAlertHistory().size(), 0);
}
// 测试 getUpperThreshold 正常输入
TEST_F(AlertManagerTest, testGetUpperThresholdNormalInput) {
manager.setAltitudeThresholds(200.0f, 100.0f);
EXPECT_FLOAT_EQ(manager.getUpperThreshold(), 200.0f);
}
// 测试 getLowerThreshold 正常输入
TEST_F(AlertManagerTest, testGetLowerThresholdNormalInput) {
manager.setAltitudeThresholds(200.0f, 100.0f);
EXPECT_FLOAT_EQ(manager.getLowerThreshold(), 100.0f);
}
// 测试 isSensorNormal 正常输入(传感器正常)
TEST_F(AlertManagerTest, testIsSensorNormalNormal) {
EXPECT_TRUE(manager.isSensorNormal());
}
// 测试 isSensorNormal 特殊场景(传感器故障)
TEST_F(AlertManagerTest, testIsSensorNormalWithFailure) {
manager.triggerSensorFailure(22000);
EXPECT_FALSE(manager.isSensorNormal());
}
} // namespace
// 主函数
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}