mirror of
https://github.com/moveit/moveit_task_constructor.git
synced 2025-11-04 14:49:57 +08:00
more unit tests
This commit is contained in:
parent
3ab899a9a8
commit
41ec46964a
@ -5,18 +5,123 @@
|
|||||||
|
|
||||||
using namespace moveit::task_constructor;
|
using namespace moveit::task_constructor;
|
||||||
|
|
||||||
TEST(Property, serialContainer) {
|
TEST(Property, standard) {
|
||||||
|
PropertyMap props;
|
||||||
|
props.declare<double>("double1", 1, "first");
|
||||||
|
props.declare<double>("double2", 2);
|
||||||
|
props.declare<double>("double4");
|
||||||
|
|
||||||
|
EXPECT_EQ(props.get<double>("double1"), 1.0);
|
||||||
|
EXPECT_EQ(props.get<double>("double2"), 2.0);
|
||||||
|
EXPECT_THROW(props.get<double>("double3"), std::runtime_error);
|
||||||
|
|
||||||
|
EXPECT_THROW(props.get<double>("double4"), std::runtime_error);
|
||||||
|
EXPECT_FALSE(props.property("double4").defined());
|
||||||
|
EXPECT_EQ(props.get<double>("double4", 0.0), 0.0);
|
||||||
|
|
||||||
|
props.set("double3", 3.0);
|
||||||
|
EXPECT_EQ(props.get<double>("double3"), 3.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(Property, redeclare) {
|
||||||
PropertyMap props;
|
PropertyMap props;
|
||||||
props.declare<double>("double1");
|
props.declare<double>("double1");
|
||||||
props.declare<double>("double2", 1);
|
|
||||||
|
|
||||||
// avoid second declaration with different type
|
// avoid second declaration with different type
|
||||||
props.declare<double>("double1");
|
props.declare<double>("double1");
|
||||||
ASSERT_THROW(props.declare<long double>("double1"), std::runtime_error);
|
EXPECT_THROW(props.declare<long double>("double1"), std::logic_error);
|
||||||
|
|
||||||
// types not matching?
|
// types not matching?
|
||||||
ASSERT_THROW(props.set("double1", 1), std::runtime_error);
|
EXPECT_THROW(props.set("double1", 1), std::logic_error);
|
||||||
|
|
||||||
props.set("double1", 3.14);
|
props.set("double1", 3.14);
|
||||||
ASSERT_EQ(props.get<double>("double1"), 3.14);
|
EXPECT_EQ(props.get<double>("double1"), 3.14);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(Property, reset) {
|
||||||
|
PropertyMap props;
|
||||||
|
props.declare<double>("double1");
|
||||||
|
|
||||||
|
// setCurrent() only assigns temporary values
|
||||||
|
props.setCurrent("double1", 1.0);
|
||||||
|
ASSERT_EQ(props.get<double>("double1"), 1.0);
|
||||||
|
EXPECT_TRUE(props.property("double1").defaultValue().empty());
|
||||||
|
|
||||||
|
// they can be reset to their defaults
|
||||||
|
props.reset();
|
||||||
|
EXPECT_FALSE(props.property("double1").defined());
|
||||||
|
|
||||||
|
// set() also updates the default
|
||||||
|
props.set("double1", 1.0);
|
||||||
|
EXPECT_EQ(props.get<double>("double1"), 1.0);
|
||||||
|
EXPECT_EQ(boost::any_cast<double>(props.property("double1").defaultValue()), 1.0);
|
||||||
|
|
||||||
|
props.setCurrent("double1", 2.0);
|
||||||
|
EXPECT_EQ(props.get<double>("double1"), 2.0);
|
||||||
|
EXPECT_EQ(boost::any_cast<double>(props.property("double1").defaultValue()), 1.0);
|
||||||
|
|
||||||
|
// back to default
|
||||||
|
props.reset();
|
||||||
|
EXPECT_EQ(props.get<double>("double1"), 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
class InitFromTest : public ::testing::Test {
|
||||||
|
protected:
|
||||||
|
void SetUp() {
|
||||||
|
master.declare<double>("double1", 1);
|
||||||
|
master.declare<double>("double2", 2);
|
||||||
|
master.declare<double>("double4", 4);
|
||||||
|
|
||||||
|
slave.declare<double>("double1");
|
||||||
|
slave.declare<double>("double2");
|
||||||
|
slave.declare<double>("double3");
|
||||||
|
}
|
||||||
|
PropertyMap master;
|
||||||
|
PropertyMap slave;
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST_F(InitFromTest, standard) {
|
||||||
|
slave.configureInitFrom(0); // init all matching vars
|
||||||
|
ASSERT_FALSE(slave.property("double1").defined());
|
||||||
|
|
||||||
|
slave.performInitFrom(0, master);
|
||||||
|
EXPECT_EQ(slave.get<double>("double1"), 1.0);
|
||||||
|
EXPECT_EQ(slave.get<double>("double2"), 2.0);
|
||||||
|
EXPECT_FALSE(slave.property("double3").defined());
|
||||||
|
EXPECT_THROW(slave.property("double4"), std::runtime_error);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(InitFromTest, limited) {
|
||||||
|
slave.configureInitFrom(0, {"double1"}); // limit init to listed props
|
||||||
|
slave.performInitFrom(0, master);
|
||||||
|
EXPECT_EQ(slave.get<double>("double1"), 1.0);
|
||||||
|
EXPECT_FALSE(slave.property("double2").defined());
|
||||||
|
EXPECT_FALSE(slave.property("double3").defined());
|
||||||
|
EXPECT_THROW(slave.property("double4"), std::runtime_error);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(InitFromTest, sourceId) {
|
||||||
|
slave.configureInitFrom(0); // init all matching vars
|
||||||
|
slave.performInitFrom(1, master); // init with wrong sourceId -> no effect
|
||||||
|
EXPECT_FALSE(slave.property("double1").defined());
|
||||||
|
EXPECT_FALSE(slave.property("double2").defined());
|
||||||
|
EXPECT_FALSE(slave.property("double3").defined());
|
||||||
|
EXPECT_THROW(slave.property("double4"), std::runtime_error);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(InitFromTest, otherName) {
|
||||||
|
slave.property("double1").configureInitFrom(0, "double2"); // init double1 from double2
|
||||||
|
slave.performInitFrom(0, master);
|
||||||
|
EXPECT_EQ(slave.get<double>("double1"), 2.0);
|
||||||
|
EXPECT_FALSE(slave.property("double2").defined());
|
||||||
|
EXPECT_FALSE(slave.property("double3").defined());
|
||||||
|
EXPECT_THROW(slave.property("double4"), std::runtime_error);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(InitFromTest, function) {
|
||||||
|
slave.property("double3").configureInitFrom(0, [](const PropertyMap& other) -> boost::any {
|
||||||
|
return other.get<double>("double1") + other.get<double>("double2");
|
||||||
|
});
|
||||||
|
slave.performInitFrom(0, master);
|
||||||
|
EXPECT_EQ(slave.get<double>("double3"), 3.0);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user