#include #include #include "network/HTTPDataSource.h" class HTTPDataSourceTest : public ::testing::Test { protected: std::unique_ptr source; void SetUp() override { DataSourceConfig config; config.host = "localhost"; config.port = 8080; config.aircraft_path = "/api/getCurrentFlightPositions"; config.vehicle_path = "/api/getCurrentVehiclePositions"; source = std::make_unique(config); } void TearDown() override { source.reset(); } }; TEST_F(HTTPDataSourceTest, ConnectTest) { EXPECT_FALSE(source->isAvailable()); // 初始状态应该是未连接 EXPECT_TRUE(source->connect()); // 连接应该成功 EXPECT_TRUE(source->isAvailable()); // 连接后应该可用 } TEST_F(HTTPDataSourceTest, DisconnectTest) { source->connect(); EXPECT_TRUE(source->isAvailable()); source->disconnect(); EXPECT_FALSE(source->isAvailable()); } TEST_F(HTTPDataSourceTest, FetchAircraftDataTest) { std::vector aircraft; source->connect(); EXPECT_TRUE(source->fetchAircraftData(aircraft)); // 注意:这里的具体数据验证取决于你的测试环境和模拟数据 } TEST_F(HTTPDataSourceTest, FetchVehicleDataTest) { std::vector vehicles; source->connect(); EXPECT_TRUE(source->fetchVehicleData(vehicles)); // 注意:这里的具体数据验证取决于你的测试环境和模拟数据 } TEST_F(HTTPDataSourceTest, CustomPathTest) { // 测试使用自定义路径创建数据源 DataSourceConfig config; config.host = "localhost"; config.port = 8080; config.aircraft_path = "/custom/path"; auto customSource = std::make_unique(config); EXPECT_TRUE(customSource->connect()); EXPECT_TRUE(customSource->isAvailable()); } TEST_F(HTTPDataSourceTest, ConnectionFailureTest) { // 测试连接到不存在的服务器 DataSourceConfig config; config.host = "invalid-host"; config.port = 9999; auto invalidSource = std::make_unique(config); EXPECT_FALSE(invalidSource->connect()); EXPECT_FALSE(invalidSource->isAvailable()); } TEST_F(HTTPDataSourceTest, FetchDataWithoutConnectionTest) { // 测试在未连接状态下获取数据 std::vector aircraft; std::vector vehicles; EXPECT_FALSE(source->fetchAircraftData(aircraft)); EXPECT_FALSE(source->fetchVehicleData(vehicles)); } // 如果你的环境支持模拟网络响应,可以添加更多测试 TEST_F(HTTPDataSourceTest, InvalidResponseTest) { // 这个测试需要模拟无效的服务器响应 // 你可能需要使用 mock 对象或者设置一个返回无效数据的测试服务器 source->connect(); std::vector aircraft; // 假设服务器返回无效的 JSON 数据 // EXPECT_FALSE(source->fetchAircraftData(aircraft)); }