Check that spacing is greater than geometry size for Composite particles and grid.

PiperOrigin-RevId: 491858371
Change-Id: I03a669286c283a72947705463426badcfc9b0bfd
This commit is contained in:
Alessio Quaglino
2022-11-30 02:17:09 -08:00
committed by Copybara-Service
parent df25d7d602
commit 26f71e2f6c
2 changed files with 49 additions and 2 deletions
+39 -1
View File
@@ -20,6 +20,7 @@
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <absl/strings/str_format.h>
#include <mujoco/mjdata.h>
#include <mujoco/mjmodel.h>
#include <mujoco/mujoco.h>
#include "test/fixture.h"
@@ -51,7 +52,8 @@ TEST_F(UserCompositeTest, MultipleJointsNotAllowedUnlessParticle) {
std::array<char, 1024> error;
mjModel* m = LoadModelFromString(xml, error.data(), error.size());
EXPECT_THAT(m, IsNull());
EXPECT_THAT(error.data(), HasSubstr("Only particles are allowed to have multiple joints"));
EXPECT_THAT(error.data(),
HasSubstr("Only particles are allowed to have multiple joints"));
}
TEST_F(UserCompositeTest, StretchAndTwistAllowed) {
@@ -76,5 +78,41 @@ TEST_F(UserCompositeTest, StretchAndTwistAllowed) {
mj_deleteModel(m);
}
TEST_F(UserCompositeTest, SpacingGreaterThanGeometry) {
static constexpr char xml[] = R"(
<mujoco>
<worldbody>
<composite type="grid" count="282 2">
<geom size="8"/>
</composite>
</worldbody>
</mujoco>
)";
std::array<char, 1024> error;
mjModel* m = LoadModelFromString(xml, error.data(), error.size());
EXPECT_THAT(m, IsNull()) << error.data();
EXPECT_THAT(error.data(),
HasSubstr("Spacing must be larger than geometry size"));
}
TEST_F(UserCompositeTest, SpacingEqualToGeometry) {
static constexpr char xml[] = R"(
<mujoco>
<worldbody>
<composite type="grid" count="282 2" spacing="8">
<geom size="8"/>
</composite>
</worldbody>
</mujoco>
)";
std::array<char, 1024> error;
mjModel* m = LoadModelFromString(xml, error.data(), error.size());
EXPECT_THAT(m, NotNull()) << error.data();
mjData* d = mj_makeData(m);
mj_step(m, d);
mj_deleteData(d);
mj_deleteModel(m);
}
} // namespace
} // namespace mujoco