解决编译问题
This commit is contained in:
parent
1c318f6e3c
commit
7f551e28ae
@ -110,7 +110,7 @@ if(EXISTS "${CMAKE_SOURCE_DIR}/tests")
|
||||
FetchContent_MakeAvailable(googletest)
|
||||
else()
|
||||
# CentOS 使用系统安装的 gtest
|
||||
find_package(GTest REQUIRED)
|
||||
find_package(GTest 1.8 REQUIRED)
|
||||
endif()
|
||||
enable_testing()
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
class MockControllableVehicles : public ControllableVehicles {
|
||||
public:
|
||||
MockControllableVehicles() : ControllableVehicles("") {}
|
||||
MOCK_METHOD(bool, isControllable, (const std::string& vehicleNo), (const));
|
||||
MOCK_CONST_METHOD1(isControllable, bool(const std::string& vehicleNo));
|
||||
};
|
||||
|
||||
// Mock AirportBounds 类
|
||||
@ -33,7 +33,7 @@ public:
|
||||
system_config.collision_detection.prediction.time_window = 30.0; // 设置预测时间窗口为30秒
|
||||
}
|
||||
|
||||
MOCK_METHOD(AreaType, getAreaType, (const Vector2D& position), (const));
|
||||
MOCK_CONST_METHOD1(getAreaType, AreaType(const Vector2D& position));
|
||||
|
||||
const AreaConfig& getAreaConfig(AreaType type) const override {
|
||||
auto it = areaConfigs_.find(type);
|
||||
@ -165,7 +165,7 @@ TEST_F(BasicCollisionTest, ParallelMotion) {
|
||||
|
||||
auto result = detector_->checkCollision(v1, v2, 30.0);
|
||||
|
||||
EXPECT_FALSE(result.willCollide) << "平行运动且距离大于碰撞半径的物体不应该检测为碰撞";
|
||||
EXPECT_FALSE(result.willCollide) << "平行运动且距离大于碰撞半径的物体不应该检测为碰<EFBFBD><EFBFBD>";
|
||||
EXPECT_EQ(result.type, CollisionType::PARALLEL) << "应该识别为平行运动";
|
||||
|
||||
// 增加更多验证
|
||||
@ -195,7 +195,7 @@ TEST_F(BasicCollisionTest, CrossingPaths) {
|
||||
|
||||
// 添加航向角度差的调试日志
|
||||
double angle_diff = std::abs(v1.heading - v2.heading);
|
||||
Logger::debug("航向<EFBFBD><EFBFBD><EFBFBD>度差检查:");
|
||||
Logger::debug("航向角度差检查:");
|
||||
Logger::debug("v1 航向: " + std::to_string(v1.heading));
|
||||
Logger::debug("v2 航向: " + std::to_string(v2.heading));
|
||||
Logger::debug("航向角度差: " + std::to_string(angle_diff));
|
||||
@ -401,7 +401,7 @@ TEST_F(BasicCollisionTest, QN002AircraftCrossing) {
|
||||
|
||||
// 记录详细的测试信息
|
||||
Logger::debug("QN002-AC001 碰撞测试结果:");
|
||||
Logger::debug("碰撞类型: ", static_cast<int>(result.type));
|
||||
Logger::debug("碰<EFBFBD><EFBFBD>类型: ", static_cast<int>(result.type));
|
||||
Logger::debug("最小距离: ", result.minDistance, "m");
|
||||
Logger::debug("碰撞时间: ", result.timeToCollision, "s");
|
||||
Logger::debug("碰撞点: (", result.collisionPoint.x, ",", result.collisionPoint.y, ")");
|
||||
@ -460,7 +460,7 @@ TEST_F(BasicCollisionTest, CrossingBeforeAndAfter) {
|
||||
Logger::debug("无人车位置: (", vehicle.position.x, ",", vehicle.position.y, ")");
|
||||
Logger::debug("交叉点位置: (", crossPoint.x, ",", crossPoint.y, ")");
|
||||
|
||||
ASSERT_FALSE(risks.empty()) << "交叉前应该检测到碰撞风险";
|
||||
ASSERT_FALSE(risks.empty()) << "交叉前应该检测到<EFBFBD><EFBFBD>撞风险";
|
||||
EXPECT_EQ(risks[0].level, RiskLevel::WARNING) << "交叉前应该是预警级别";
|
||||
|
||||
// 2. 测试交叉过程中
|
||||
@ -477,7 +477,7 @@ TEST_F(BasicCollisionTest, CrossingBeforeAndAfter) {
|
||||
risks = detector_->detectCollisions();
|
||||
|
||||
// 记录详细的测试信息
|
||||
Logger::debug("交叉过程中碰撞检测:");
|
||||
Logger::debug("交叉过程<EFBFBD><EFBFBD>碰撞检测:");
|
||||
Logger::debug("航空器位置: (", aircraft.position.x, ",", aircraft.position.y, ")");
|
||||
Logger::debug("无人车位置: (", vehicle.position.x, ",", vehicle.position.y, ")");
|
||||
|
||||
@ -504,7 +504,7 @@ TEST_F(BasicCollisionTest, CrossingBeforeAndAfter) {
|
||||
|
||||
EXPECT_TRUE(risks.empty()) << "航空器通过远离安全距离后,应该解除冲突";
|
||||
|
||||
// 4. 测试无人车继续运动
|
||||
// 4. 测试无<EFBFBD><EFBFBD><EFBFBD>车继续运动
|
||||
// 无人车向北移动到交叉点
|
||||
vehicle.position = {crossPoint.x, crossPoint.y};
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
class MockControllableVehicles : public ControllableVehicles {
|
||||
public:
|
||||
MockControllableVehicles() : ControllableVehicles("") {} // 使用空字符串,避免加载实际配置
|
||||
MOCK_METHOD(bool, isControllable, (const std::string& vehicleNo), (const));
|
||||
MOCK_CONST_METHOD1(isControllable, bool(const std::string& vehicleNo));
|
||||
};
|
||||
|
||||
// Mock AirportBounds 类
|
||||
@ -31,7 +31,7 @@ public:
|
||||
areaConfigs_[AreaType::TEST_ZONE] = config;
|
||||
}
|
||||
|
||||
MOCK_METHOD(AreaType, getAreaType, (const Vector2D& position), (const));
|
||||
MOCK_CONST_METHOD1(getAreaType, AreaType(const Vector2D& position));
|
||||
|
||||
const AreaConfig& getAreaConfig(AreaType type) const override {
|
||||
auto it = areaConfigs_.find(type);
|
||||
@ -199,7 +199,7 @@ TEST_F(CollisionDetectorTest, PerpendicularCrossingPathsCollision) {
|
||||
EXPECT_TRUE(collisionResult.willCollide) << "垂直交叉路径的车辆应该检测到碰撞";
|
||||
|
||||
// 测试2:不同速度比
|
||||
v1.speed = 5.0; // 降低速度
|
||||
v1.speed = 5.0; // 降<EFBFBD><EFBFBD><EFBFBD>速度
|
||||
v2.speed = 15.0; // 提高速度
|
||||
collisionResult = detector_->checkCollision(v1, v2, 30.0);
|
||||
EXPECT_TRUE(collisionResult.willCollide) << "不同速度的垂直交叉路径车辆应该检测到碰撞";
|
||||
@ -265,7 +265,7 @@ TEST_F(CollisionDetectorTest, TailgatingCollision) {
|
||||
v2.type = MovingObjectType::UNMANNED;
|
||||
v2.isControllable = true;
|
||||
|
||||
// 测试1:同向同速
|
||||
// 测试1:同向<EFBFBD><EFBFBD>速
|
||||
auto collisionResult = detector_->checkCollision(v1, v2, 30.0);
|
||||
EXPECT_FALSE(collisionResult.willCollide) << "同向同速的车辆不应该检测到碰撞";
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user