Add line error check to user_objects and xml_native_reader tests.
PiperOrigin-RevId: 603714614 Change-Id: Ic031f33a9a6eb45b3e61cb666e0d4890bfe08275
This commit is contained in:
committed by
Copybara-Service
parent
fe57ae498f
commit
df76b55fe0
@@ -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 ----------------------------------------------------
|
||||
|
||||
@@ -160,6 +160,7 @@ TEST_F(XMLReaderTest, InvalidNUserBody) {
|
||||
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 3"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, InvalidNUserJoint) {
|
||||
@@ -172,6 +173,7 @@ TEST_F(XMLReaderTest, InvalidNUserJoint) {
|
||||
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 3"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, InvalidNUserGeom) {
|
||||
@@ -184,6 +186,7 @@ TEST_F(XMLReaderTest, InvalidNUserGeom) {
|
||||
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 3"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, InvalidNUserSite) {
|
||||
@@ -196,6 +199,7 @@ TEST_F(XMLReaderTest, InvalidNUserSite) {
|
||||
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 3"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, InvalidNUserCamera) {
|
||||
@@ -208,6 +212,7 @@ TEST_F(XMLReaderTest, InvalidNUserCamera) {
|
||||
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 3"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, InvalidNUserTendon) {
|
||||
@@ -220,6 +225,7 @@ TEST_F(XMLReaderTest, InvalidNUserTendon) {
|
||||
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 3"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, InvalidNUserActuator) {
|
||||
@@ -232,6 +238,7 @@ TEST_F(XMLReaderTest, InvalidNUserActuator) {
|
||||
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 3"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, InvalidNUserSensor) {
|
||||
@@ -244,6 +251,7 @@ TEST_F(XMLReaderTest, InvalidNUserSensor) {
|
||||
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 3"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, CanParseInf) {
|
||||
@@ -312,6 +320,7 @@ TEST_F(XMLReaderTest, InvalidArrayElement) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("problem reading attribute 'axisangle'"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 5"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, InvalidArrayLength) {
|
||||
@@ -328,6 +337,7 @@ TEST_F(XMLReaderTest, InvalidArrayLength) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("has too much data"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 5"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, InvalidQuaternion) {
|
||||
@@ -344,6 +354,7 @@ TEST_F(XMLReaderTest, InvalidQuaternion) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("zero quaternion is not allowed"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 5"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, InvalidNumber) {
|
||||
@@ -360,6 +371,7 @@ TEST_F(XMLReaderTest, InvalidNumber) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("problem reading attribute"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 5"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, AllowsSpaces) {
|
||||
@@ -458,6 +470,7 @@ TEST_F(XMLReaderTest, CameraInvalidFovyAndSensorsize) {
|
||||
mjModel* m = LoadModelFromString(xml, error.data(), error.size());
|
||||
EXPECT_THAT(m, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("either 'fovy' or 'sensorsize'"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 6"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, CameraPricipalRequiresSensorsize) {
|
||||
@@ -475,6 +488,7 @@ TEST_F(XMLReaderTest, CameraPricipalRequiresSensorsize) {
|
||||
mjModel* m = LoadModelFromString(xml, error.data(), error.size());
|
||||
EXPECT_THAT(m, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("attribute missing: 'sensorsize'"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 6"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, CameraSensorsizeRequiresResolution) {
|
||||
@@ -492,6 +506,7 @@ TEST_F(XMLReaderTest, CameraSensorsizeRequiresResolution) {
|
||||
mjModel* m = LoadModelFromString(xml, error.data(), error.size());
|
||||
EXPECT_THAT(m, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("attribute missing: 'resolution'"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 6"));
|
||||
}
|
||||
|
||||
// ---------------------- test inertia parsing --------------------------------
|
||||
@@ -625,6 +640,7 @@ TEST_F(HfieldParsingTest, HasDataBadSize) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
EXPECT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("data length must match nrow*ncol"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 4"));
|
||||
}
|
||||
|
||||
TEST_F(HfieldParsingTest, HasData) {
|
||||
@@ -682,6 +698,7 @@ TEST_F(RelativeFrameSensorParsingTest, RefNameButNoType) {
|
||||
std::array<char, 1024> error;
|
||||
LoadModelFromString(xml, error.data(), error.size());
|
||||
EXPECT_THAT(error.data(), HasSubstr("but reftype is missing"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 8"));
|
||||
}
|
||||
|
||||
TEST_F(RelativeFrameSensorParsingTest, RefTypeButNoName) {
|
||||
@@ -699,6 +716,7 @@ TEST_F(RelativeFrameSensorParsingTest, RefTypeButNoName) {
|
||||
std::array<char, 1024> error;
|
||||
LoadModelFromString(xml, error.data(), error.size());
|
||||
EXPECT_THAT(error.data(), HasSubstr("attribute missing: 'refname'"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 8"));
|
||||
}
|
||||
|
||||
// ------------- test actlimited parsing ---------------------------------------
|
||||
@@ -723,6 +741,7 @@ TEST_F(ActuatorTest, InvalidActlimited) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("unrecognized attribute"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 10"));
|
||||
}
|
||||
|
||||
TEST_F(ActuatorTest, IncompleteActlimited) {
|
||||
@@ -835,6 +854,7 @@ TEST_F(ActuatorParseTest, DamperRequiresControlRange) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("invalid control range"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 10"));
|
||||
}
|
||||
|
||||
TEST_F(ActuatorParseTest, DamperPositiveControlRange) {
|
||||
@@ -855,6 +875,7 @@ TEST_F(ActuatorParseTest, DamperPositiveControlRange) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("control range cannot be negative"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 10"));
|
||||
}
|
||||
|
||||
TEST_F(ActuatorParseTest, ReadsPositionIntvelKv) {
|
||||
@@ -898,6 +919,7 @@ TEST_F(ActuatorParseTest, RequirePositiveKv) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("kv cannot be negative"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 10"));
|
||||
}
|
||||
|
||||
TEST_F(ActuatorParseTest, PositionIntvelocityVelocityDefaultsPropagate) {
|
||||
@@ -1044,6 +1066,7 @@ TEST_F(ActuatorParseTest, IntvelocityNoActrangeThrowsError) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("invalid actrange for actuator"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line = 10"));
|
||||
}
|
||||
|
||||
TEST_F(ActuatorParseTest, IntvelocityDefaultsPropagate) {
|
||||
@@ -1252,6 +1275,7 @@ TEST_F(ActuatorParseTest, MusclesSmoothdynNegative) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("muscle tausmooth cannot be negative"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 10"));
|
||||
}
|
||||
|
||||
TEST_F(ActuatorParseTest, GroupDisable) {
|
||||
@@ -1278,6 +1302,7 @@ TEST_F(ActuatorParseTest, GroupDisableNegative) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("must be non-negative"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 3"));
|
||||
}
|
||||
|
||||
TEST_F(ActuatorParseTest, GroupDisableTooBig) {
|
||||
@@ -1290,6 +1315,7 @@ TEST_F(ActuatorParseTest, GroupDisableTooBig) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("cannot exceed 30"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 3"));
|
||||
}
|
||||
|
||||
// ------------- test sensor parsing -------------------------------------------
|
||||
@@ -1308,6 +1334,7 @@ TEST_F(SensorParseTest, UserObjTypeNoName) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("objtype 'site' given but"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 4"));
|
||||
}
|
||||
|
||||
TEST_F(SensorParseTest, UserObjNameNoType) {
|
||||
@@ -1322,6 +1349,7 @@ TEST_F(SensorParseTest, UserObjNameNoType) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("objname 'kevin' given but"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 4"));
|
||||
}
|
||||
|
||||
TEST_F(SensorParseTest, UserNeedstageAcc) {
|
||||
@@ -1357,6 +1385,7 @@ TEST_F(XMLReaderTest, ZnearZeroNotAllowed) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("znear must be strictly positive"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 4"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, ZnearNegativeNotAllowed) {
|
||||
@@ -1371,6 +1400,7 @@ TEST_F(XMLReaderTest, ZnearNegativeNotAllowed) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("znear must be strictly positive"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 4"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, ExtentZeroNotAllowed) {
|
||||
@@ -1383,6 +1413,7 @@ TEST_F(XMLReaderTest, ExtentZeroNotAllowed) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("extent must be strictly positive"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 3"));
|
||||
}
|
||||
|
||||
TEST_F(XMLReaderTest, ExtentNegativeNotAllowed) {
|
||||
@@ -1395,6 +1426,7 @@ TEST_F(XMLReaderTest, ExtentNegativeNotAllowed) {
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("extent must be strictly positive"));
|
||||
EXPECT_THAT(error.data(), HasSubstr("line 3"));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user