add unit tests for Fallbacks container

This commit is contained in:
j-kuehn 2021-07-08 07:57:45 +02:00 committed by v4hn
parent d0ab3c3703
commit f6eadb3fc4

View File

@ -44,6 +44,7 @@ void append(ContainerBase& c, const std::initializer_list<StageType>& types) {
}
}
}
constexpr double INF = std::numeric_limits<double>::infinity();
class NamedStage : public GeneratorMockup
{
@ -685,3 +686,52 @@ TEST(Fallback, failing) {
EXPECT_FALSE(t.plan());
EXPECT_EQ(t.solutions().size(), 0u);
}
TEST(Fallback, ConnectStageInsideFallbacks) {
resetMockupIds();
Task t;
t.setRobotModel(getModel());
t.add(std::make_unique<GeneratorMockup>());
auto fallbacks = std::make_unique<Fallbacks>("Fallbacks");
fallbacks->add(std::make_unique<ConnectMockup>());
t.add(std::move(fallbacks));
t.add(std::make_unique<GeneratorMockup>());
EXPECT_TRUE(t.plan());
EXPECT_EQ(t.numSolutions(), 1u);
}
TEST(Fallback, ComputeFirstSuccessfulStageOnly) {
resetMockupIds();
Task t;
t.setRobotModel(getModel());
t.add(std::make_unique<GeneratorMockup>());
auto fallbacks = std::make_unique<Fallbacks>("Fallbacks");
fallbacks->add(std::make_unique<ForwardMockup>(PredefinedCosts::constant(0.0)));
fallbacks->add(std::make_unique<ForwardMockup>(PredefinedCosts::constant(0.0)));
t.add(std::move(fallbacks));
EXPECT_TRUE(t.plan());
EXPECT_EQ(t.numSolutions(), 1u);
}
TEST(Fallback, ActiveChildReset) {
resetMockupIds();
Task t;
t.setRobotModel(getModel());
t.add(std::make_unique<GeneratorMockup>(PredefinedCosts{ { 0.0, INF, 0.0 } }));
auto fallbacks = std::make_unique<Fallbacks>("Fallbacks");
fallbacks->add(std::make_unique<ForwardMockup>(PredefinedCosts::constant(0.0)));
fallbacks->add(std::make_unique<ForwardMockup>(PredefinedCosts::constant(0.0)));
t.add(std::move(fallbacks));
EXPECT_TRUE(t.plan());
EXPECT_EQ(t.numSolutions(), 4u);
}