optimal & fix file cmake
This commit is contained in:
@@ -113,6 +113,37 @@ TEST(MoveBase2Config, ReadsEveryGroupFromYaml)
|
||||
EXPECT_EQ(config.global_frame, "map");
|
||||
EXPECT_EQ(config.robot_base_frame, "base_link");
|
||||
EXPECT_EQ(config.recovery_namespace, "recovery");
|
||||
EXPECT_FALSE(config.docking_requires_marker);
|
||||
}
|
||||
|
||||
TEST(MoveBase2Config, MissionLayerIsEnabledByDefault)
|
||||
{
|
||||
// Mặc định bật: order VDA5050 đi qua mission layer và được cắt thành chặng. Đổi mặc định này là
|
||||
// đổi hành vi của mọi order trên robot, nên nó được khoá lại bằng test.
|
||||
const MoveBase2Config defaults;
|
||||
EXPECT_TRUE(defaults.mission_layer_enabled);
|
||||
EXPECT_EQ(defaults.mission_namespace, "mission_adapters");
|
||||
}
|
||||
|
||||
TEST(MoveBase2Config, RejectsEnabledMissionLayerWithoutNamespace)
|
||||
{
|
||||
MoveBase2Config config = withRecoveryCount(loadFrom("move_base2"), 2);
|
||||
config.mission_layer_enabled = true;
|
||||
config.mission_namespace.clear();
|
||||
|
||||
std::string error;
|
||||
EXPECT_FALSE(config.validate(error));
|
||||
EXPECT_NE(error.find("mission_namespace"), std::string::npos) << error;
|
||||
}
|
||||
|
||||
TEST(MoveBase2Config, DisabledMissionLayerDoesNotNeedANamespace)
|
||||
{
|
||||
MoveBase2Config config = withRecoveryCount(loadFrom("move_base2"), 2);
|
||||
config.mission_layer_enabled = false;
|
||||
config.mission_namespace.clear();
|
||||
|
||||
std::string error;
|
||||
EXPECT_TRUE(config.validate(error)) << error;
|
||||
}
|
||||
|
||||
TEST(MoveBase2Config, ReadsProfileBindingsFromNestedNamespaces)
|
||||
@@ -121,12 +152,37 @@ TEST(MoveBase2Config, ReadsProfileBindingsFromNestedNamespaces)
|
||||
|
||||
EXPECT_EQ(config.position.global_planner_name, "TestGlobalPlanner");
|
||||
EXPECT_EQ(config.position.local_planner_name, "TestLocalPlanner");
|
||||
EXPECT_DOUBLE_EQ(config.position.default_xy_tolerance, 0.15);
|
||||
|
||||
// Ghép nối cần sai số chặt hơn nhiều — đây chính là thứ sáu entry point cũ khác nhau ở.
|
||||
EXPECT_EQ(config.docking.global_planner_name, "TestDockPlanner");
|
||||
EXPECT_DOUBLE_EQ(config.docking.default_xy_tolerance, 0.02);
|
||||
EXPECT_DOUBLE_EQ(config.docking.default_yaw_tolerance, 0.02);
|
||||
EXPECT_EQ(config.backup_global_planner_name, "TestBackupGlobalPlanner");
|
||||
ASSERT_EQ(config.docking_marker_profiles.size(), 1U);
|
||||
const auto trolley = config.docking_marker_profiles.find("trolley");
|
||||
ASSERT_NE(trolley, config.docking_marker_profiles.end());
|
||||
EXPECT_EQ(trolley->second.global_planner_name, "TestTrolleyDockPlanner");
|
||||
EXPECT_EQ(trolley->second.local_planner_name, "TestTrolleyDockLocalPlanner");
|
||||
}
|
||||
|
||||
TEST(MoveBase2ConfigRootProfile, LoadsIndependentPlannerPairsWithoutTheLegacyAdapter)
|
||||
{
|
||||
robot::NodeHandle root;
|
||||
robot::NodeHandle profile_nh(root, "root_profiles");
|
||||
const MoveBase2Config config = MoveBase2Config::load(profile_nh);
|
||||
|
||||
EXPECT_EQ(config.position.global_planner_name, "TestGlobalPlanner");
|
||||
EXPECT_EQ(config.position.local_planner_name, "TestLocalPlanner");
|
||||
EXPECT_EQ(config.docking.global_planner_name, "TestDockPlanner");
|
||||
EXPECT_EQ(config.docking.local_planner_name, "TestLocalPlanner");
|
||||
EXPECT_EQ(config.go_straight.global_planner_name, "TestStraightPlanner");
|
||||
EXPECT_EQ(config.go_straight.local_planner_name, "TestStraightLocalPlanner");
|
||||
EXPECT_EQ(config.rotate.global_planner_name, "TestRotatePlanner");
|
||||
EXPECT_EQ(config.rotate.local_planner_name, "TestRotateLocalPlanner");
|
||||
EXPECT_EQ(config.backup_global_planner_name, "TestBackupGlobalPlanner");
|
||||
ASSERT_EQ(config.docking_marker_profiles.size(), 1U);
|
||||
const auto trolley = config.docking_marker_profiles.find("trolley");
|
||||
ASSERT_NE(trolley, config.docking_marker_profiles.end());
|
||||
EXPECT_EQ(trolley->second.global_planner_name, "TestTrolleyDockPlanner");
|
||||
EXPECT_EQ(trolley->second.local_planner_name, "TestTrolleyDockLocalPlanner");
|
||||
EXPECT_FALSE(config.docking_requires_marker);
|
||||
}
|
||||
|
||||
TEST(MoveBase2Config, LoadedConfigValidates)
|
||||
@@ -170,17 +226,7 @@ TEST(MoveBase2Config, RejectsConfigWithNoLocalPlannerAtAll)
|
||||
|
||||
std::string error;
|
||||
EXPECT_FALSE(config.validate(error))
|
||||
<< "cấu hình này lúc chạy sẽ từ chối MỌI yêu cầu — phải chặn ngay lúc khởi động";
|
||||
}
|
||||
|
||||
TEST(MoveBase2Config, RejectsNonPositiveToleranceOnConfiguredProfile)
|
||||
{
|
||||
MoveBase2Config config = minimalValid();
|
||||
config.position.default_xy_tolerance = 0.0;
|
||||
|
||||
std::string error;
|
||||
EXPECT_FALSE(config.validate(error));
|
||||
EXPECT_NE(error.find("xy_goal_tolerance"), std::string::npos);
|
||||
<< "this config would reject EVERY request at runtime — it must be caught at startup";
|
||||
}
|
||||
|
||||
TEST(MoveBase2Config, PropagatesStateMachineValidationFailure)
|
||||
@@ -267,9 +313,6 @@ TEST(MoveBase2ConfigLegacy, RootToleranceAppliesToEveryProfile)
|
||||
MoveBase2Config config;
|
||||
config.fromLegacyNodeHandle(nh);
|
||||
|
||||
EXPECT_DOUBLE_EQ(config.position.default_xy_tolerance, 0.25);
|
||||
EXPECT_DOUBLE_EQ(config.docking.default_yaw_tolerance, 0.30);
|
||||
EXPECT_DOUBLE_EQ(config.rotate.default_xy_tolerance, 0.25);
|
||||
}
|
||||
|
||||
TEST(MoveBase2ConfigLegacy, ZeroPatienceBecomesOneControlCycleNotDisabled)
|
||||
@@ -319,8 +362,10 @@ TEST(MoveBase2ConfigLegacy, AutoDetectPrefersTheModernSchema)
|
||||
robot::NodeHandle root;
|
||||
const MoveBase2Config config = MoveBase2Config::load(root);
|
||||
|
||||
EXPECT_EQ(config.robot_base_frame, "base_link") << "chọn nhầm schema gen-1 dù có namespace mới";
|
||||
EXPECT_TRUE(config.sensors.laser_sor_enabled) << "khoá chỉ có ở schema mới không được đọc";
|
||||
EXPECT_EQ(config.robot_base_frame, "base_link") << "picked the gen-1 schema even though the new "
|
||||
"namespace exists";
|
||||
EXPECT_TRUE(config.sensors.laser_sor_enabled) << "a key that only exists in the new schema was "
|
||||
"not read";
|
||||
}
|
||||
|
||||
TEST(MoveBase2ConfigLegacy, AutoDetectFallsBackToLegacyWhenNoModernNamespace)
|
||||
|
||||
Reference in New Issue
Block a user