optimal & fix file cmake

This commit is contained in:
2026-08-03 22:41:32 +07:00
parent d8babff20b
commit 701d25f952
70 changed files with 5572 additions and 1146 deletions

View File

@@ -44,7 +44,12 @@ struct Rig
{
runner.setNamespace(ns);
robot::NodeHandle nh;
return runner.configure(nh);
if (!runner.configure(nh))
{
return false;
}
std::string error;
return runner.configureRoutes(nh, error);
}
FakeClockPort clock{1000.0};
@@ -62,6 +67,40 @@ TEST(RecoveryRunner, LoadsBehaviorsInDeclaredOrder)
EXPECT_EQ(rig.runner.behaviorName(1), "wait_long");
}
TEST(RecoveryRunner, ResolvesPerTriggerRoutesByBehaviorName)
{
Rig rig;
ASSERT_TRUE(rig.load("recovery"));
const move_base2::RecoveryRoutes& routes = rig.runner.routes();
ASSERT_EQ(routes.planning_failed.size(), 1u);
EXPECT_EQ(routes.planning_failed[0], 0u); // wait_short
ASSERT_EQ(routes.controlling_failed.size(), 2u);
EXPECT_EQ(routes.controlling_failed[0], 1u); // wait_long
EXPECT_EQ(routes.controlling_failed[1], 0u); // wait_short
ASSERT_EQ(routes.oscillation.size(), 1u);
EXPECT_EQ(routes.oscillation[0], 1u); // wait_long
}
TEST(RecoveryRunner, SkipsFuturePluginFromRoutesWithoutCreatingInvalidIndexes)
{
Rig rig;
rig.runner.setNamespace("recovery_missing_detour");
robot::NodeHandle nh;
// Registry báo false vì plugin chưa có, nhưng wait vẫn được nạp và phải dùng được.
EXPECT_FALSE(rig.runner.configure(nh));
ASSERT_EQ(rig.runner.behaviorCount(), 1u);
std::string error;
ASSERT_TRUE(rig.runner.configureRoutes(nh, error)) << error;
const move_base2::RecoveryRoutes& routes = rig.runner.routes();
ASSERT_EQ(routes.controlling_failed.size(), 1u);
EXPECT_EQ(routes.controlling_failed[0], 0u);
ASSERT_EQ(routes.oscillation.size(), 1u);
EXPECT_EQ(routes.oscillation[0], 0u);
}
TEST(RecoveryRunner, ReportsOutputKindOfLoadedBehaviors)
{
Rig rig;
@@ -210,7 +249,8 @@ TEST(RecoveryRunner, ConfigureRequiresClockAndPose)
runner.setNamespace("recovery");
robot::NodeHandle nh;
EXPECT_FALSE(runner.configure(nh)) << "thiếu ClockPort/PosePort phải hỏng ngay, không phải lúc tick";
EXPECT_FALSE(runner.configure(nh)) << "a missing ClockPort/PosePort must fail right away, not at "
"tick time";
}
TEST(RecoveryRunner, ConfigureTwiceRejected)