mirror of
https://github.com/moveit/moveit_task_constructor.git
synced 2025-11-04 14:49:57 +08:00
Simplify tests by introducing EXPECT_COSTS()
This commit is contained in:
parent
61399d6d23
commit
61496fecd3
@ -18,7 +18,7 @@ if (CATKIN_ENABLE_TESTING)
|
|||||||
catkin_add_gtest(${PROJECT_NAME}-test-serial test_serial.cpp)
|
catkin_add_gtest(${PROJECT_NAME}-test-serial test_serial.cpp)
|
||||||
target_link_libraries(${PROJECT_NAME}-test-serial ${PROJECT_NAME} ${PROJECT_NAME}_stages gtest_utils gtest_main)
|
target_link_libraries(${PROJECT_NAME}-test-serial ${PROJECT_NAME} ${PROJECT_NAME}_stages gtest_utils gtest_main)
|
||||||
|
|
||||||
catkin_add_gtest(${PROJECT_NAME}-test-fallback test_fallback.cpp)
|
catkin_add_gmock(${PROJECT_NAME}-test-fallback test_fallback.cpp)
|
||||||
target_link_libraries(${PROJECT_NAME}-test-fallback ${PROJECT_NAME} ${PROJECT_NAME}_stages gtest_utils gtest_main)
|
target_link_libraries(${PROJECT_NAME}-test-fallback ${PROJECT_NAME} ${PROJECT_NAME}_stages gtest_utils gtest_main)
|
||||||
|
|
||||||
catkin_add_gtest(${PROJECT_NAME}-test-properties test_properties.cpp)
|
catkin_add_gtest(${PROJECT_NAME}-test-properties test_properties.cpp)
|
||||||
@ -27,7 +27,7 @@ if (CATKIN_ENABLE_TESTING)
|
|||||||
catkin_add_gmock(${PROJECT_NAME}-test-cost_queue test_cost_queue.cpp)
|
catkin_add_gmock(${PROJECT_NAME}-test-cost_queue test_cost_queue.cpp)
|
||||||
target_link_libraries(${PROJECT_NAME}-test-cost_queue ${PROJECT_NAME} gtest_main)
|
target_link_libraries(${PROJECT_NAME}-test-cost_queue ${PROJECT_NAME} gtest_main)
|
||||||
|
|
||||||
catkin_add_gtest(${PROJECT_NAME}-test-interface_state test_interface_state.cpp)
|
catkin_add_gmock(${PROJECT_NAME}-test-interface_state test_interface_state.cpp)
|
||||||
target_link_libraries(${PROJECT_NAME}-test-interface_state ${PROJECT_NAME} gtest_utils gtest_main)
|
target_link_libraries(${PROJECT_NAME}-test-interface_state ${PROJECT_NAME} gtest_utils gtest_main)
|
||||||
|
|
||||||
catkin_add_gtest(${PROJECT_NAME}-test-cost_terms test_cost_terms.cpp)
|
catkin_add_gtest(${PROJECT_NAME}-test-cost_terms test_cost_terms.cpp)
|
||||||
|
|||||||
@ -7,6 +7,7 @@
|
|||||||
#include "models.h"
|
#include "models.h"
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
#include <gmock/gmock.h>
|
||||||
|
|
||||||
namespace moveit {
|
namespace moveit {
|
||||||
namespace task_constructor {
|
namespace task_constructor {
|
||||||
@ -128,5 +129,13 @@ struct TaskTestBase : public testing::Test
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define EXPECT_COSTS(value, matcher) \
|
||||||
|
{ \
|
||||||
|
std ::vector<double> costs; \
|
||||||
|
std::transform(value.begin(), value.end(), std::back_inserter(costs), \
|
||||||
|
[](const SolutionBaseConstPtr& s) { return s->cost(); }); \
|
||||||
|
EXPECT_THAT(costs, matcher); \
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace task_constructor
|
} // namespace task_constructor
|
||||||
} // namespace moveit
|
} // namespace moveit
|
||||||
|
|||||||
@ -70,21 +70,19 @@ TEST_F(FallbacksFixturePropagate, ComputeFirstSuccessfulStageOnly) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(FallbacksFixturePropagate, ComputeFirstSuccessfulStagePerSolutionOnly) {
|
TEST_F(FallbacksFixturePropagate, ComputeFirstSuccessfulStagePerSolutionOnly) {
|
||||||
t.add(std::make_unique<GeneratorMockup>(std::list<double>{ 0.0, 1.0 }));
|
t.add(std::make_unique<GeneratorMockup>(std::list<double>{ 1.0, 2.0 }));
|
||||||
|
|
||||||
auto fallbacks = std::make_unique<Fallbacks>("Fallbacks");
|
auto fallbacks = std::make_unique<Fallbacks>("Fallbacks");
|
||||||
fallbacks->add(std::make_unique<ForwardMockup>(std::list<double>{ INF, 0.0 }));
|
fallbacks->add(std::make_unique<ForwardMockup>(std::list<double>{ INF, 10.0 }));
|
||||||
fallbacks->add(std::make_unique<ForwardMockup>(std::list<double>{ 0.0, INF }));
|
fallbacks->add(std::make_unique<ForwardMockup>(std::list<double>{ 20.0, INF }));
|
||||||
auto fwd1 = fallbacks->findChild("FWD1");
|
auto fwd1 = fallbacks->findChild("FWD1");
|
||||||
auto fwd2 = fallbacks->findChild("FWD2");
|
auto fwd2 = fallbacks->findChild("FWD2");
|
||||||
t.add(std::move(fallbacks));
|
t.add(std::move(fallbacks));
|
||||||
|
|
||||||
EXPECT_TRUE(t.plan());
|
EXPECT_TRUE(t.plan());
|
||||||
EXPECT_EQ(t.numSolutions(), 2u);
|
EXPECT_COSTS(t.solutions(), testing::ElementsAre(12, 21));
|
||||||
ASSERT_EQ(fwd1->solutions().size(), 1u);
|
EXPECT_EQ(fwd1->solutions().size(), 1u);
|
||||||
EXPECT_EQ(fwd1->solutions().front()->start()->priority().cost(), 1.0);
|
EXPECT_EQ(fwd2->solutions().size(), 1u);
|
||||||
ASSERT_EQ(fwd2->solutions().size(), 1u);
|
|
||||||
EXPECT_EQ(fwd2->solutions().front()->start()->priority().cost(), 0.0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(FallbacksFixturePropagate, successfulWithMixedSolutions) {
|
TEST_F(FallbacksFixturePropagate, successfulWithMixedSolutions) {
|
||||||
@ -96,8 +94,7 @@ TEST_F(FallbacksFixturePropagate, successfulWithMixedSolutions) {
|
|||||||
t.add(std::move(fallback));
|
t.add(std::move(fallback));
|
||||||
|
|
||||||
EXPECT_TRUE(t.plan());
|
EXPECT_TRUE(t.plan());
|
||||||
ASSERT_EQ(t.solutions().size(), 1u);
|
EXPECT_COSTS(t.solutions(), testing::ElementsAre(1.0));
|
||||||
EXPECT_EQ(t.solutions().front()->cost(), 1.0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(FallbacksFixturePropagate, successfulWithMixedSolutions2) {
|
TEST_F(FallbacksFixturePropagate, successfulWithMixedSolutions2) {
|
||||||
@ -109,22 +106,23 @@ TEST_F(FallbacksFixturePropagate, successfulWithMixedSolutions2) {
|
|||||||
t.add(std::move(fallback));
|
t.add(std::move(fallback));
|
||||||
|
|
||||||
EXPECT_TRUE(t.plan());
|
EXPECT_TRUE(t.plan());
|
||||||
ASSERT_EQ(t.solutions().size(), 1u);
|
EXPECT_COSTS(t.solutions(), testing::ElementsAre(1.0));
|
||||||
EXPECT_EQ(t.solutions().front()->cost(), 1.0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(FallbacksFixturePropagate, ActiveChildReset) {
|
TEST_F(FallbacksFixturePropagate, ActiveChildReset) {
|
||||||
t.add(std::make_unique<GeneratorMockup>(PredefinedCosts{ { 0.0, INF, 0.0 } }));
|
t.add(std::make_unique<GeneratorMockup>(PredefinedCosts{ { 1.0, INF, 3.0 } }));
|
||||||
|
|
||||||
auto fallbacks = std::make_unique<Fallbacks>("Fallbacks");
|
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(10.0)));
|
||||||
fallbacks->add(std::make_unique<ForwardMockup>(PredefinedCosts::constant(0.0)));
|
fallbacks->add(std::make_unique<ForwardMockup>(PredefinedCosts::constant(20.0)));
|
||||||
auto first = fallbacks->findChild("FWD1");
|
auto fwd1 = fallbacks->findChild("FWD1");
|
||||||
|
auto fwd2 = fallbacks->findChild("FWD2");
|
||||||
t.add(std::move(fallbacks));
|
t.add(std::move(fallbacks));
|
||||||
|
|
||||||
EXPECT_TRUE(t.plan());
|
EXPECT_TRUE(t.plan());
|
||||||
EXPECT_EQ(t.numSolutions(), 2u);
|
EXPECT_COSTS(t.solutions(), testing::ElementsAre(11, 13));
|
||||||
EXPECT_EQ(first->solutions().size(), 2u);
|
EXPECT_COSTS(fwd1->solutions(), testing::ElementsAre(10, 10));
|
||||||
|
EXPECT_COSTS(fwd2->solutions(), testing::IsEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
using FallbacksFixtureConnect = TaskTestBase;
|
using FallbacksFixtureConnect = TaskTestBase;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user