diff --git a/test/user/user_model_test.cc b/test/user/user_model_test.cc index b3af89d1..7deb8894 100644 --- a/test/user/user_model_test.cc +++ b/test/user/user_model_test.cc @@ -45,9 +45,68 @@ static std::vector GetRow(const mjtNum* array, int ncolumn, int row) { // ----------------------------- test mjCModel -------------------------------- -using UserCModelTest = MujocoTest; +using UserModelTest = MujocoTest; -TEST_F(UserCModelTest, RepeatedNames) { +// clarify the semantic of body_rootid and body_weldid +TEST_F(UserModelTest, WeldRootID) { + static constexpr char xml[] = R"( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + )"; + + std::array error; + mjModel* model = LoadModelFromString(xml, error.data(), error.size()); + EXPECT_THAT(model, NotNull()); + + EXPECT_THAT(AsVector(model->body_rootid, model->nbody), + ElementsAre(0, 1, 1, 3, 3, 5, 5, 7, 7, 9, 9)); + EXPECT_THAT(AsVector(model->body_weldid, model->nbody), + ElementsAre(0, 1, 2, 3, 3, 0, 0, 0, 0, 0, 10)); + + mj_deleteModel(model); +} + +TEST_F(UserModelTest, RepeatedNames) { static constexpr char xml[] = R"( @@ -65,7 +124,7 @@ TEST_F(UserCModelTest, RepeatedNames) { EXPECT_THAT(error.data(), HasSubstr("repeated name 'geom1' in geom")); } -TEST_F(UserCModelTest, SameFrame) { +TEST_F(UserModelTest, SameFrame) { static constexpr char xml[] = R"( @@ -116,7 +175,7 @@ TEST_F(UserCModelTest, SameFrame) { mj_deleteModel(model); } -TEST_F(UserCModelTest, ActuatorSparsity) { +TEST_F(UserModelTest, ActuatorSparsity) { static constexpr char xml[] = R"( @@ -140,7 +199,7 @@ TEST_F(UserCModelTest, ActuatorSparsity) { mj_deleteModel(m); } -TEST_F(UserCModelTest, NestedZeroMassBodiesOK) { +TEST_F(UserModelTest, NestedZeroMassBodiesOK) { static constexpr char xml[] = R"( @@ -163,7 +222,7 @@ TEST_F(UserCModelTest, NestedZeroMassBodiesOK) { mj_deleteModel(model); } -TEST_F(UserCModelTest, NestedZeroMassBodiesWithJointOK) { +TEST_F(UserModelTest, NestedZeroMassBodiesWithJointOK) { static constexpr char xml[] = R"( @@ -190,7 +249,7 @@ TEST_F(UserCModelTest, NestedZeroMassBodiesWithJointOK) { mj_deleteModel(model); } -TEST_F(UserCModelTest, NestedZeroMassBodiesFail) { +TEST_F(UserModelTest, NestedZeroMassBodiesFail) { static constexpr char xml[] = R"( @@ -218,7 +277,7 @@ TEST_F(UserCModelTest, NestedZeroMassBodiesFail) { mj_deleteModel(model); } -TEST_F(UserCModelTest, ConvexHullForCollisionMeshes) { +TEST_F(UserModelTest, ConvexHullForCollisionMeshes) { static constexpr char xml[] = R"( @@ -262,7 +321,7 @@ TEST_F(UserCModelTest, ConvexHullForCollisionMeshes) { mj_deleteModel(model); } -TEST_F(UserCModelTest, ConvexHullForPairCollisionMeshes) { +TEST_F(UserModelTest, ConvexHullForPairCollisionMeshes) { static constexpr char xml[] = R"(