From f6eadb3fc4c44a5b67f15b06177286e9edd84cf6 Mon Sep 17 00:00:00 2001 From: j-kuehn <57101356+j-kuehn@users.noreply.github.com> Date: Thu, 8 Jul 2021 07:57:45 +0200 Subject: [PATCH] add unit tests for Fallbacks container --- core/test/test_container.cpp | 50 ++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/core/test/test_container.cpp b/core/test/test_container.cpp index 168f5ac0..3b6a9ec4 100644 --- a/core/test/test_container.cpp +++ b/core/test/test_container.cpp @@ -44,6 +44,7 @@ void append(ContainerBase& c, const std::initializer_list& types) { } } } +constexpr double INF = std::numeric_limits::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()); + + auto fallbacks = std::make_unique("Fallbacks"); + fallbacks->add(std::make_unique()); + t.add(std::move(fallbacks)); + + t.add(std::make_unique()); + + EXPECT_TRUE(t.plan()); + EXPECT_EQ(t.numSolutions(), 1u); +} + +TEST(Fallback, ComputeFirstSuccessfulStageOnly) { + resetMockupIds(); + Task t; + t.setRobotModel(getModel()); + + t.add(std::make_unique()); + + auto fallbacks = std::make_unique("Fallbacks"); + fallbacks->add(std::make_unique(PredefinedCosts::constant(0.0))); + fallbacks->add(std::make_unique(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(PredefinedCosts{ { 0.0, INF, 0.0 } })); + + auto fallbacks = std::make_unique("Fallbacks"); + fallbacks->add(std::make_unique(PredefinedCosts::constant(0.0))); + fallbacks->add(std::make_unique(PredefinedCosts::constant(0.0))); + t.add(std::move(fallbacks)); + + EXPECT_TRUE(t.plan()); + EXPECT_EQ(t.numSolutions(), 4u); +}