AI 自动生成测试用例
This commit is contained in:
parent
0c20483f87
commit
32fc0107d6
|
|
@ -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();
|
||||
}
|
||||
Loading…
Reference in New Issue