Fix bugs related to saving of <statistics> values.
Before this change:
- User-modified values of `mjModel.stat.{meanmass, meaninertia}` would not be saved to XML.
- Non-user-modified values of `mjModel.stat.{meansize, extent, center}` would always get saved to XML.
After this change values are saved to XML only if provided by the user, either in the XML or by changing values in `mjModel` before saving.
PiperOrigin-RevId: 589473351
Change-Id: I4dcf4892ef61c35edf424226e731232d861bad8d
This commit is contained in:
committed by
Copybara-Service
parent
e7d637f375
commit
b22919543d
@@ -1135,7 +1135,7 @@ using DecompilerTest = MujocoTest;
|
||||
TEST_F(DecompilerTest, SavesStatitics) {
|
||||
static constexpr char xml[] = R"(
|
||||
<mujoco>
|
||||
<statistic meansize="2" extent="3" center="4 5 6"/>
|
||||
<statistic meansize="2" extent="3" center="4 5 6" meanmass="7" meaninertia="8"/>
|
||||
</mujoco>
|
||||
)";
|
||||
mjModel* model = LoadModelFromString(xml);
|
||||
@@ -1145,10 +1145,36 @@ TEST_F(DecompilerTest, SavesStatitics) {
|
||||
model->stat.center[0] = 9;
|
||||
model->stat.center[1] = 10;
|
||||
model->stat.center[2] = 11;
|
||||
model->stat.meanmass = 12;
|
||||
model->stat.meaninertia = 13;
|
||||
std::string saved_xml = SaveAndReadXml(model);
|
||||
EXPECT_THAT(saved_xml, HasSubstr("meansize=\"7\""));
|
||||
EXPECT_THAT(saved_xml, HasSubstr("extent=\"8\""));
|
||||
EXPECT_THAT(saved_xml, HasSubstr("center=\"9 10 11\""));
|
||||
EXPECT_THAT(saved_xml, HasSubstr("meanmass=\"12\""));
|
||||
EXPECT_THAT(saved_xml, HasSubstr("meaninertia=\"13\""));
|
||||
mj_deleteModel(model);
|
||||
}
|
||||
|
||||
TEST_F(DecompilerTest, DoesntSaveInferredStatitics) {
|
||||
static constexpr char xml[] = R"(
|
||||
<mujoco>
|
||||
<worldbody>
|
||||
<body>
|
||||
<geom size="0.2"/>
|
||||
</body>
|
||||
</worldbody>
|
||||
</mujoco>
|
||||
)";
|
||||
mjModel* model = LoadModelFromString(xml);
|
||||
ASSERT_THAT(model, NotNull());
|
||||
std::string saved_xml = SaveAndReadXml(model);
|
||||
EXPECT_THAT(saved_xml, Not(HasSubstr("meansize")));
|
||||
EXPECT_THAT(saved_xml, Not(HasSubstr("meanmass")));
|
||||
EXPECT_THAT(saved_xml, Not(HasSubstr("meaninertia")));
|
||||
EXPECT_THAT(saved_xml, Not(HasSubstr("center")));
|
||||
EXPECT_THAT(saved_xml, Not(HasSubstr("extent")));
|
||||
EXPECT_THAT(saved_xml, Not(HasSubstr("statistic")));
|
||||
mj_deleteModel(model);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user