#include #include #include #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(); }