Improve error reporting of sensorized objects.
Also remove duplication of element name and id from most error messages. PiperOrigin-RevId: 628065116 Change-Id: Idd962fbab7aeba09e3a70c6c9d044b23db94cf23
This commit is contained in:
committed by
Copybara-Service
parent
cbb048ff00
commit
027c26a153
@@ -543,8 +543,9 @@ TEST_F(RelativeFrameSensorParsingTest, BadRefName) {
|
||||
)";
|
||||
std::array<char, 1024> error;
|
||||
LoadModelFromString(xml, error.data(), error.size());
|
||||
EXPECT_THAT(error.data(), HasSubstr("unrecognized name of reference frame"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 8"));
|
||||
EXPECT_THAT(error.data(),
|
||||
HasSubstr("unrecognized name 'wrong_name' of reference frame"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 8"));
|
||||
}
|
||||
|
||||
TEST_F(RelativeFrameSensorParsingTest, BadRefType) {
|
||||
@@ -563,7 +564,48 @@ TEST_F(RelativeFrameSensorParsingTest, BadRefType) {
|
||||
std::array<char, 1024> error;
|
||||
LoadModelFromString(xml, error.data(), error.size());
|
||||
EXPECT_THAT(error.data(), HasSubstr("reference frame object must be"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 8"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 8"));
|
||||
}
|
||||
|
||||
TEST_F(RelativeFrameSensorParsingTest, BadObjName) {
|
||||
static constexpr char xml[] = R"(
|
||||
<mujoco>
|
||||
<worldbody>
|
||||
<site name="a"/>
|
||||
</worldbody>
|
||||
<sensor>
|
||||
<framepos name="tom" objtype="site" objname="alessio" reftype="site" refname="a"/>
|
||||
</sensor>
|
||||
</mujoco>
|
||||
)";
|
||||
std::array<char, 1024> error;
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(),
|
||||
HasSubstr("unrecognized name 'alessio' of sensorized object"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("name 'tom'"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 7"));
|
||||
}
|
||||
|
||||
TEST_F(RelativeFrameSensorParsingTest, BadObjRefName) {
|
||||
static constexpr char xml[] = R"(
|
||||
<mujoco>
|
||||
<worldbody>
|
||||
<site name="a"/>
|
||||
</worldbody>
|
||||
<sensor>
|
||||
<framepos name="tom" objtype="site" objname="a" reftype="site" refname="alessio"/>
|
||||
</sensor>
|
||||
</mujoco>
|
||||
)";
|
||||
std::array<char, 1024> error;
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(
|
||||
error.data(),
|
||||
HasSubstr("unrecognized name 'alessio' of reference frame object"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("name 'tom'"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 7"));
|
||||
}
|
||||
|
||||
// ------------- sensor compilation --------------------------------------------
|
||||
@@ -710,7 +752,7 @@ TEST_F(MjCGeomTest, NanSize) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, testing::IsNull());
|
||||
ASSERT_THAT(error.data(), HasSubstr("nan"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 5"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 5"));
|
||||
}
|
||||
|
||||
// ------------- test height fields --------------------------------------------
|
||||
@@ -785,7 +827,7 @@ TEST_F(CameraSpecTest, FovyLimits) {
|
||||
mjModel* m = LoadModelFromString(xml, error.data(), error.size());
|
||||
EXPECT_THAT(m, IsNull()) << error.data();
|
||||
EXPECT_THAT(error.data(), HasSubstr("fovy too large"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 6"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 6"));
|
||||
mj_deleteModel(m);
|
||||
}
|
||||
|
||||
@@ -1071,7 +1113,7 @@ TEST_F(ActRangeTest, ActRangeBad) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("invalid actrange"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 10"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 10"));
|
||||
}
|
||||
|
||||
TEST_F(ActRangeTest, ActRangeUndefined) {
|
||||
@@ -1092,7 +1134,7 @@ TEST_F(ActRangeTest, ActRangeUndefined) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("invalid actrange"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 10"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 10"));
|
||||
}
|
||||
|
||||
TEST_F(ActRangeTest, ActRangeNoDyntype) {
|
||||
@@ -1199,7 +1241,7 @@ TEST_F(ActDimTest, NonzeroNotAllowedInStateless) {
|
||||
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("invalid actdim 1 in stateless"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 10"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 10"));
|
||||
}
|
||||
|
||||
TEST_F(ActDimTest, ZeroNotAllowedInStateful) {
|
||||
@@ -1221,7 +1263,7 @@ TEST_F(ActDimTest, ZeroNotAllowedInStateful) {
|
||||
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("invalid actdim 0 in stateful"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 10"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 10"));
|
||||
}
|
||||
|
||||
// ------------- test nuser_xxx fields -----------------------------------------
|
||||
@@ -1241,7 +1283,7 @@ TEST_F(UserDataTest, NBodyTooSmall) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("nuser_body"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 5"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 5"));
|
||||
}
|
||||
|
||||
TEST_F(UserDataTest, NJointTooSmall) {
|
||||
@@ -1260,7 +1302,7 @@ TEST_F(UserDataTest, NJointTooSmall) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("nuser_jnt"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 7"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 7"));
|
||||
}
|
||||
|
||||
TEST_F(UserDataTest, NGeomTooSmall) {
|
||||
@@ -1276,7 +1318,7 @@ TEST_F(UserDataTest, NGeomTooSmall) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("nuser_geom"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 5"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 5"));
|
||||
}
|
||||
|
||||
TEST_F(UserDataTest, NSiteTooSmall) {
|
||||
@@ -1292,7 +1334,7 @@ TEST_F(UserDataTest, NSiteTooSmall) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("nuser_site"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 5"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 5"));
|
||||
}
|
||||
|
||||
TEST_F(UserDataTest, NCameraTooSmall) {
|
||||
@@ -1308,7 +1350,7 @@ TEST_F(UserDataTest, NCameraTooSmall) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("nuser_cam"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 5"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 5"));
|
||||
}
|
||||
|
||||
TEST_F(UserDataTest, NTendonTooSmall) {
|
||||
@@ -1331,7 +1373,7 @@ TEST_F(UserDataTest, NTendonTooSmall) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("nuser_tendon"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 9"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 9"));
|
||||
}
|
||||
|
||||
TEST_F(UserDataTest, NActuatorTooSmall) {
|
||||
@@ -1353,7 +1395,7 @@ TEST_F(UserDataTest, NActuatorTooSmall) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("nuser_actuator"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 11"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 11"));
|
||||
}
|
||||
|
||||
TEST_F(UserDataTest, NSensorTooSmall) {
|
||||
@@ -1372,7 +1414,7 @@ TEST_F(UserDataTest, NSensorTooSmall) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("nuser_sensor"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 8"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 8"));
|
||||
}
|
||||
|
||||
// ------------- test for auto parsing of *limited fields ----------------------
|
||||
@@ -1415,7 +1457,7 @@ TEST_F(LimitedTest, ErrorIfLimitedMissingOnJoint) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("limited"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 6"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 6"));
|
||||
}
|
||||
|
||||
TEST_F(LimitedTest, ExplicitLimitedFalseIsOk) {
|
||||
@@ -1465,7 +1507,7 @@ TEST_F(LimitedTest, ErrorIfLimitedMissingOnTendon) {
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("limited"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("tendon"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 13"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 13"));
|
||||
}
|
||||
|
||||
TEST_F(LimitedTest, ErrorIfForceLimitedMissingOnActuator) {
|
||||
@@ -1490,7 +1532,7 @@ TEST_F(LimitedTest, ErrorIfForceLimitedMissingOnActuator) {
|
||||
EXPECT_THAT(error.data(), HasSubstr("forcelimited"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("forcerange"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("actuator"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 11"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 11"));
|
||||
}
|
||||
|
||||
// ------------- tests for tendon ----------------------------------------------
|
||||
@@ -1518,7 +1560,7 @@ TEST_F(TendonTest, SiteBetweenPulleyNotAllowed) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
EXPECT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("needs a neighbor that is not a pulley"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 9"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 9"));
|
||||
}
|
||||
|
||||
// ------------- tests for tendon springrange ----------------------------------
|
||||
@@ -1573,7 +1615,7 @@ TEST_F(SpringrangeTest, InvalidRange) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("invalid springlength in tendon"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 9"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 9"));
|
||||
}
|
||||
|
||||
// ------------- test frame ----------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user