Add line error check to user_objects and xml_native_reader tests.

PiperOrigin-RevId: 603714614
Change-Id: Ic031f33a9a6eb45b3e61cb666e0d4890bfe08275
This commit is contained in:
Alessio Quaglino
2024-02-02 09:56:43 -08:00
committed by Copybara-Service
parent fe57ae498f
commit df76b55fe0
2 changed files with 80 additions and 0 deletions
+48
View File
@@ -522,6 +522,7 @@ 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"));
}
TEST_F(RelativeFrameSensorParsingTest, BadRefType) {
@@ -540,6 +541,7 @@ 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"));
}
// ------------- sensor compilation --------------------------------------------
@@ -686,6 +688,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"));
}
// ------------- test height fields --------------------------------------------
@@ -760,6 +763,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"));
mj_deleteModel(m);
}
@@ -950,6 +954,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"));
}
TEST_F(ActRangeTest, ActRangeUndefined) {
@@ -970,6 +975,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"));
}
TEST_F(ActRangeTest, ActRangeNoDyntype) {
@@ -1076,6 +1082,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"));
}
TEST_F(ActDimTest, ZeroNotAllowedInStateful) {
@@ -1097,6 +1104,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"));
}
// ------------- test nuser_xxx fields -----------------------------------------
@@ -1116,6 +1124,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"));
}
TEST_F(UserDataTest, NJointTooSmall) {
@@ -1134,6 +1143,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"));
}
TEST_F(UserDataTest, NGeomTooSmall) {
@@ -1149,6 +1159,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"));
}
TEST_F(UserDataTest, NSiteTooSmall) {
@@ -1164,6 +1175,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"));
}
TEST_F(UserDataTest, NCameraTooSmall) {
@@ -1179,6 +1191,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"));
}
TEST_F(UserDataTest, NTendonTooSmall) {
@@ -1201,6 +1214,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"));
}
TEST_F(UserDataTest, NActuatorTooSmall) {
@@ -1222,6 +1236,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"));
}
TEST_F(UserDataTest, NSensorTooSmall) {
@@ -1240,6 +1255,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"));
}
// ------------- test for auto parsing of *limited fields ----------------------
@@ -1279,6 +1295,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"));
}
TEST_F(LimitedTest, ExplicitLimitedFalseIsOk) {
@@ -1328,6 +1345,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"));
}
TEST_F(LimitedTest, ErrorIfForceLimitedMissingOnActuator) {
@@ -1352,6 +1370,35 @@ 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"));
}
// ------------- tests for tendon ----------------------------------------------
using TendonTest = MujocoTest;
TEST_F(TendonTest, SiteBetweenPulleyNotAllowed) {
static constexpr char xml[] = R"(
<mujoco>
<worldbody>
<site name="1"/>
<site name="2"/>
<site name="3"/>
</worldbody>
<tendon>
<spatial>
<site site="1"/>
<pulley divisor="1"/>
<site site="3"/>
</spatial>
</tendon>
</mujoco>
)";
std::array<char, 1024> error;
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"));
}
// ------------- tests for tendon springrange ----------------------------------
@@ -1406,6 +1453,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"));
}
// ------------- test frame ----------------------------------------------------