ODF/tests/test_odf_service.cpp

73 lines
2.1 KiB
C++
Raw Permalink Normal View History

2026-05-19 08:10:10 +00:00
#include <gtest/gtest.h>
#include <optional>
#include <string>
// 假设的端口详细信息结构体
struct PortDetail {
int id;
std::string unit;
std::string rack;
// 为简化测试,添加 operator==
bool operator==(const PortDetail& other) const {
return id == other.id && unit == other.unit && rack == other.rack;
}
};
// 假设的 OdfService 类
class OdfService {
public:
std::optional<PortDetail> get_port_detail(int port_id) {
// 模拟实现:只有 1 和 2 存在
if (port_id == 1) {
return PortDetail{1, "Unit-A", "Rack-01"};
} else if (port_id == 2) {
return PortDetail{2, "Unit-B", "Rack-02"};
}
return std::nullopt;
}
};
class OdfServiceTest : public ::testing::Test {
protected:
OdfService service;
};
// 正常输入测试:存在的端口 ID 返回正确的信息
TEST_F(OdfServiceTest, testGetPortDetailNormalCase) {
auto result = service.get_port_detail(1);
ASSERT_TRUE(result.has_value());
PortDetail expected{1, "Unit-A", "Rack-01"};
EXPECT_EQ(result.value(), expected);
}
// 边界值测试:端口 ID 为 0
TEST_F(OdfServiceTest, testGetPortDetailBoundaryZero) {
auto result = service.get_port_detail(0);
EXPECT_FALSE(result.has_value());
}
// 边界值测试:端口 ID 为负数
TEST_F(OdfServiceTest, testGetPortDetailBoundaryNegative) {
auto result = service.get_port_detail(-1);
EXPECT_FALSE(result.has_value());
}
// 异常输入测试:不存在的端口 ID
TEST_F(OdfServiceTest, testGetPortDetailNonexistent) {
auto result = service.get_port_detail(999);
EXPECT_FALSE(result.has_value());
}
// 特殊场景测试:验证不同端口返回不同单元和机架
TEST_F(OdfServiceTest, testGetPortDetailDifferentUnits) {
auto result1 = service.get_port_detail(1);
ASSERT_TRUE(result1.has_value());
EXPECT_EQ(result1.value().unit, "Unit-A");
EXPECT_EQ(result1.value().rack, "Rack-01");
auto result2 = service.get_port_detail(2);
ASSERT_TRUE(result2.has_value());
EXPECT_EQ(result2.value().unit, "Unit-B");
EXPECT_EQ(result2.value().rack, "Rack-02");
}