Compare commits
1 Commits
main
...
test_20260
| Author | SHA1 | Date |
|---|---|---|
|
|
efdd1e24c7 |
|
|
@ -0,0 +1,118 @@
|
|||
#include <gtest/gtest.h>
|
||||
#include <memory>
|
||||
#include "alert_manager.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
class AlertManagerTest : public ::testing::Test {
|
||||
protected:
|
||||
AlertManager alertManager;
|
||||
|
||||
void SetUp() override {
|
||||
alertManager.initialize();
|
||||
}
|
||||
};
|
||||
|
||||
// 测试 resetAlert 正常输入
|
||||
TEST_F(AlertManagerTest, testResetAlertNormalInput) {
|
||||
// 触发一个高度上限预警
|
||||
alertManager.checkAltitudeAlert(150.0f, 100);
|
||||
EXPECT_TRUE(alertManager.hasActiveAlerts());
|
||||
|
||||
// 重置该预警
|
||||
alertManager.resetAlert(AlertType::ALTITUDE_UPPER);
|
||||
|
||||
// 验证预警状态已恢复为 INACTIVE
|
||||
auto it = alertManager.getAlertHistory().end();
|
||||
if (alertManager.getAlertHistory().size() > 0) {
|
||||
it = alertManager.getAlertHistory().begin();
|
||||
}
|
||||
EXPECT_EQ(it->status, AlertStatus::INACTIVE);
|
||||
}
|
||||
|
||||
// 测试 resetAlert 边界值:重置 NONE 类型
|
||||
TEST_F(AlertManagerTest, testResetAlertBoundaryValueNoneType) {
|
||||
// 尝试重置 NONE 类型,应无副作用
|
||||
alertManager.resetAlert(AlertType::NONE);
|
||||
EXPECT_FALSE(alertManager.hasActiveAlerts());
|
||||
}
|
||||
|
||||
// 测试 resetAllAlerts 正常输入
|
||||
TEST_F(AlertManagerTest, testResetAllAlertsNormalInput) {
|
||||
// 触发多个预警
|
||||
alertManager.checkAltitudeAlert(150.0f, 100);
|
||||
alertManager.triggerLowBattery(200, 15.0f);
|
||||
EXPECT_TRUE(alertManager.hasActiveAlerts());
|
||||
|
||||
// 重置所有预警
|
||||
alertManager.resetAllAlerts();
|
||||
|
||||
// 验证所有预警均被清除
|
||||
EXPECT_FALSE(alertManager.hasActiveAlerts());
|
||||
EXPECT_FALSE(alertManager.hasUnacknowledgedAlerts());
|
||||
}
|
||||
|
||||
// 测试 resetAllAlerts 特殊场景:无预警时调用
|
||||
TEST_F(AlertManagerTest, testResetAllAlertsSpecialCaseNoAlerts) {
|
||||
// 确保初始状态下无预警
|
||||
EXPECT_FALSE(alertManager.hasActiveAlerts());
|
||||
EXPECT_FALSE(alertManager.hasUnacknowledgedAlerts());
|
||||
|
||||
// 调用重置函数
|
||||
alertManager.resetAllAlerts();
|
||||
|
||||
// 验证状态仍为无预警
|
||||
EXPECT_FALSE(alertManager.hasActiveAlerts());
|
||||
EXPECT_FALSE(alertManager.hasUnacknowledgedAlerts());
|
||||
}
|
||||
|
||||
// 测试 hasActiveAlerts 正常输入:存在活动预警
|
||||
TEST_F(AlertManagerTest, testHasActiveAlertsNormalInputWithActiveAlert) {
|
||||
// 触发一个活动预警
|
||||
alertManager.checkAltitudeAlert(150.0f, 100);
|
||||
EXPECT_TRUE(alertManager.hasActiveAlerts());
|
||||
}
|
||||
|
||||
// 测试 hasActiveAlerts 正常输入:无活动预警
|
||||
TEST_F(AlertManagerTest, testHasActiveAlertsNormalInputWithoutActiveAlert) {
|
||||
// 初始状态无预警
|
||||
EXPECT_FALSE(alertManager.hasActiveAlerts());
|
||||
}
|
||||
|
||||
// 测试 hasActiveAlerts 边界值:确认后预警应视为活动
|
||||
TEST_F(AlertManagerTest, testHasActiveAlertsBoundaryValueAcknowledgedAlert) {
|
||||
// 触发并确认预警
|
||||
alertManager.checkAltitudeAlert(150.0f, 100);
|
||||
alertManager.acknowledgeAlert(AlertType::ALTITUDE_UPPER, 200);
|
||||
|
||||
// 确认后状态为 ACKNOWLEDGED,仍属于活动状态
|
||||
EXPECT_TRUE(alertManager.hasActiveAlerts());
|
||||
}
|
||||
|
||||
// 测试 hasUnacknowledgedAlerts 正常输入:存在未确认预警
|
||||
TEST_F(AlertManagerTest, testHasUnacknowledgedAlertsNormalInputWithUnacknowledgedAlert) {
|
||||
// 触发预警但未确认
|
||||
alertManager.checkAltitudeAlert(150.0f, 100);
|
||||
EXPECT_TRUE(alertManager.hasUnacknowledgedAlerts());
|
||||
}
|
||||
|
||||
// 测试 hasUnacknowledgedAlerts 正常输入:已确认预警不应计入
|
||||
TEST_F(AlertManagerTest, testHasUnacknowledgedAlertsNormalInputAfterAcknowledgment) {
|
||||
// 触发并确认预警
|
||||
alertManager.checkAltitudeAlert(150.0f, 100);
|
||||
alertManager.acknowledgeAlert(AlertType::ALTITUDE_UPPER, 200);
|
||||
|
||||
// 状态变为 ACKNOWLEDGED,不再算作未确认
|
||||
EXPECT_FALSE(alertManager.hasUnacknowledgedAlerts());
|
||||
}
|
||||
|
||||
// 测试 hasUnacknowledgedAlerts 特殊场景:仅 RESOLVED 预警
|
||||
TEST_F(AlertManagerTest, testHasUnacknowledgedAlertsSpecialCaseResolvedOnly) {
|
||||
// 手动设置一个已解决的预警
|
||||
AlertInfo info(AlertType::LOW_BATTERY);
|
||||
info.status = AlertStatus::RESOLVED;
|
||||
info.trigger_time = 100;
|
||||
alertManager.alerts_[AlertType::LOW_BATTERY] = info;
|
||||
|
||||
EXPECT_FALSE(alertManager.hasUnacknowledgedAlerts());
|
||||
}
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
#include <gtest/gtest.h>
|
||||
#include "altitude_calculator.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace {
|
||||
|
||||
// 测试用例:metersToFeet 正常输入测试
|
||||
TEST(AltitudeCalculatorTest, testMetersToFeetNormalInput) {
|
||||
EXPECT_FLOAT_EQ(AltitudeCalculator::metersToFeet(1.0f), 3.28084f);
|
||||
EXPECT_FLOAT_EQ(AltitudeCalculator::metersToFeet(0.0f), 0.0f);
|
||||
EXPECT_FLOAT_EQ(AltitudeCalculator::metersToFeet(10.0f), 32.8084f);
|
||||
}
|
||||
|
||||
// 测试用例:metersToFeet 边界值测试
|
||||
TEST(AltitudeCalculatorTest, testMetersToFeetBoundaryValues) {
|
||||
EXPECT_FLOAT_EQ(AltitudeCalculator::metersToFeet(-1.0f), -3.28084f);
|
||||
EXPECT_FLOAT_EQ(AltitudeCalculator::metersToFeet(1e6f), 3280840.0f);
|
||||
}
|
||||
|
||||
// 测试用例:feetToMeters 正常输入测试
|
||||
TEST(AltitudeCalculatorTest, testFeetToMetersNormalInput) {
|
||||
EXPECT_FLOAT_EQ(AltitudeCalculator::feetToMeters(3.28084f), 1.0f);
|
||||
EXPECT_FLOAT_EQ(AltitudeCalculator::feetToMeters(0.0f), 0.0f);
|
||||
EXPECT_FLOAT_EQ(AltitudeCalculator::feetToMeters(32.8084f), 10.0f);
|
||||
}
|
||||
|
||||
// 测试用例:feetToMeters 边界值测试
|
||||
TEST(AltitudeCalculatorTest, testFeetToMetersBoundaryValues) {
|
||||
EXPECT_FLOAT_EQ(AltitudeCalculator::feetToMeters(-3.28084f), -1.0f);
|
||||
EXPECT_FLOAT_EQ(AltitudeCalculator::feetToMeters(1e6f), 304800.0f);
|
||||
}
|
||||
|
||||
// 测试用例:isValidPressure 正常输入测试
|
||||
TEST(AltitudeCalculatorTest, testIsValidPressureNormalInput) {
|
||||
EXPECT_TRUE(AltitudeCalculator::isValidPressure(500.0f));
|
||||
EXPECT_TRUE(AltitudeCalculator::isValidPressure(1100.0f));
|
||||
EXPECT_TRUE(AltitudeCalculator::isValidPressure(1013.25f));
|
||||
}
|
||||
|
||||
// 测试用例:isValidPressure 边界值测试
|
||||
TEST(AltitudeCalculatorTest, testIsValidPressureBoundaryValues) {
|
||||
EXPECT_TRUE(AltitudeCalculator::isValidPressure(500.0f));
|
||||
EXPECT_TRUE(AltitudeCalculator::isValidPressure(1100.0f));
|
||||
EXPECT_FALSE(AltitudeCalculator::isValidPressure(499.9f));
|
||||
EXPECT_FALSE(AltitudeCalculator::isValidPressure(1100.1f));
|
||||
}
|
||||
|
||||
// 测试用例:isValidPressure 异常输入测试
|
||||
TEST(AltitudeCalculatorTest, testIsValidPressureInvalidInput) {
|
||||
EXPECT_FALSE(AltitudeCalculator::isValidPressure(-100.0f));
|
||||
EXPECT_FALSE(AltitudeCalculator::isValidPressure(INFINITY));
|
||||
EXPECT_FALSE(AltitudeCalculator::isValidPressure(NAN));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
Loading…
Reference in New Issue