88 lines
2.9 KiB
C++
88 lines
2.9 KiB
C++
#include <gtest/gtest.h>
|
|
#include <gmock/gmock.h>
|
|
#include "network/HTTPDataSource.h"
|
|
|
|
class HTTPDataSourceTest : public ::testing::Test {
|
|
protected:
|
|
std::unique_ptr<HTTPDataSource> 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<HTTPDataSource>(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> aircraft;
|
|
source->connect();
|
|
EXPECT_TRUE(source->fetchAircraftData(aircraft));
|
|
// 注意:这里的具体数据验证取决于你的测试环境和模拟数据
|
|
}
|
|
|
|
TEST_F(HTTPDataSourceTest, FetchVehicleDataTest) {
|
|
std::vector<Vehicle> 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<HTTPDataSource>(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<HTTPDataSource>(config);
|
|
EXPECT_FALSE(invalidSource->connect());
|
|
EXPECT_FALSE(invalidSource->isAvailable());
|
|
}
|
|
|
|
TEST_F(HTTPDataSourceTest, FetchDataWithoutConnectionTest) {
|
|
// 测试在未连接状态下获取数据
|
|
std::vector<Aircraft> aircraft;
|
|
std::vector<Vehicle> vehicles;
|
|
|
|
EXPECT_FALSE(source->fetchAircraftData(aircraft));
|
|
EXPECT_FALSE(source->fetchVehicleData(vehicles));
|
|
}
|
|
|
|
// 如果你的环境支持模拟网络响应,可以添加更多测试
|
|
TEST_F(HTTPDataSourceTest, InvalidResponseTest) {
|
|
// 这个测试需要模拟无效的服务器响应
|
|
// 你可能需要使用 mock 对象或者设置一个返回无效数据的测试服务器
|
|
source->connect();
|
|
std::vector<Aircraft> aircraft;
|
|
// 假设服务器返回无效的 JSON 数据
|
|
// EXPECT_FALSE(source->fetchAircraftData(aircraft));
|
|
}
|