Add error reporting to model loading in engine tests, where missing

PiperOrigin-RevId: 795844607
Change-Id: I4163c53c05796c2e3036af28a98f58c15bb1c99c
This commit is contained in:
Yuval Tassa
2025-08-16 08:11:11 -07:00
committed by Copybara-Service
parent bbb70d98a4
commit 5a24eb2d34
16 changed files with 220 additions and 98 deletions
+46 -12
View File
@@ -70,7 +70,10 @@ static constexpr char AngMomTestingModel[] = R"(
// compare subtree angular momentum computed in two ways
TEST_F(AngMomMatTest, CompareAngMom) {
mjModel* model = LoadModelFromString(AngMomTestingModel);
char error[1024];
mjModel* model =
LoadModelFromString(AngMomTestingModel, error, sizeof(error));
ASSERT_THAT(model, NotNull()) << error;
int nv = model->nv;
int bodyid = mj_name2id(model, mjOBJ_BODY, "link1");
@@ -104,7 +107,10 @@ TEST_F(AngMomMatTest, CompareAngMom) {
// compare subtree angular momentum matrix: analytical and findiff
TEST_F(AngMomMatTest, CompareAngMomMats) {
mjModel* model = LoadModelFromString(AngMomTestingModel);
char error[1024];
mjModel* model =
LoadModelFromString(AngMomTestingModel, error, sizeof(error));
ASSERT_THAT(model, NotNull()) << error;
int nv = model->nv;
int bodyid = mj_name2id(model, mjOBJ_BODY, "link1");
mjData* data = mj_makeData(model);
@@ -191,7 +197,10 @@ static constexpr char kJacobianTestingModel[] = R"(
// compare analytic and finite-differenced subtree-com Jacobian
TEST_F(JacobianTest, SubtreeJac) {
mjModel* model = LoadModelFromString(kJacobianTestingModel);
char error[1024];
mjModel* model =
LoadModelFromString(kJacobianTestingModel, error, sizeof(error));
ASSERT_THAT(model, NotNull()) << error;
int nv = model->nv;
int bodyid = mj_name2id(model, mjOBJ_BODY, "main");
mjData* data = mj_makeData(model);
@@ -242,7 +251,10 @@ TEST_F(JacobianTest, SubtreeJac) {
// confirm that applying linear forces via the subtree-com Jacobian only creates
// the expected linear accelerations (no accelerations of internal joints)
TEST_F(JacobianTest, SubtreeJacNoInternalAcc) {
mjModel* model = LoadModelFromString(kJacobianTestingModel);
char error[1024];
mjModel* model =
LoadModelFromString(kJacobianTestingModel, error, sizeof(error));
ASSERT_THAT(model, NotNull()) << error;
int nv = model->nv;
int bodyid = mj_name2id(model, mjOBJ_BODY, "main");
mjData* data = mj_makeData(model);
@@ -407,7 +419,9 @@ static constexpr char kHinge[] = R"(
// compare mj_jacDot with finite-differenced mj_jac
TEST_F(JacobianTest, JacDot) {
for (auto xml : {kHinge, kQuat, kTelescope, kFreeBall, kQuatlessPendulum}) {
mjModel* model = LoadModelFromString(xml);
char error[1024];
mjModel* model = LoadModelFromString(xml, error, sizeof(error));
ASSERT_THAT(model, NotNull()) << error;
int nv = model->nv;
mjData* data = mj_makeData(model);
@@ -520,7 +534,10 @@ static constexpr char name2idTestingModel[] = R"(
)";
TEST_F(Name2idTest, FindIds) {
mjModel* model = LoadModelFromString(name2idTestingModel);
char error[1024];
mjModel* model =
LoadModelFromString(name2idTestingModel, error, sizeof(error));
ASSERT_THAT(model, NotNull()) << error;
EXPECT_THAT(mj_name2id(model, mjOBJ_BODY, "world"), 0);
EXPECT_THAT(mj_name2id(model, mjOBJ_BODY, "body1"), 1);
@@ -542,7 +559,10 @@ TEST_F(Name2idTest, FindIds) {
}
TEST_F(Name2idTest, MissingIds) {
mjModel* model = LoadModelFromString(name2idTestingModel);
char error[1024];
mjModel* model =
LoadModelFromString(name2idTestingModel, error, sizeof(error));
ASSERT_THAT(model, NotNull()) << error;
EXPECT_THAT(mj_name2id(model, mjOBJ_BODY, "abody3"), -1);
EXPECT_THAT(mj_name2id(model, mjOBJ_GEOM, "abody2_geom2"), -1);
@@ -561,7 +581,10 @@ TEST_F(Name2idTest, MissingIds) {
}
TEST_F(Name2idTest, EmptyIds) {
mjModel* model = LoadModelFromString(name2idTestingModel);
char error[1024];
mjModel* model =
LoadModelFromString(name2idTestingModel, error, sizeof(error));
ASSERT_THAT(model, NotNull()) << error;
EXPECT_THAT(mj_name2id(model, mjOBJ_BODY, ""), -1);
@@ -569,7 +592,10 @@ TEST_F(Name2idTest, EmptyIds) {
}
TEST_F(Name2idTest, Namespaces) {
mjModel* model = LoadModelFromString(name2idTestingModel);
char error[1024];
mjModel* model =
LoadModelFromString(name2idTestingModel, error, sizeof(error));
ASSERT_THAT(model, NotNull()) << error;
EXPECT_THAT(mj_name2id(model, mjOBJ_GEOM, "camera1"), 3);
@@ -631,7 +657,9 @@ static constexpr char ballJointModel[] = R"(
TEST_F(SupportTest, DifferentiatePosSubQuat) {
const mjtNum eps = 1e-12; // epsilon for float comparison
mjModel* model = LoadModelFromString(ballJointModel);
char error[1024];
mjModel* model = LoadModelFromString(ballJointModel, error, sizeof(error));
ASSERT_THAT(model, NotNull()) << error;
int seed = 1;
for (mjtNum angle : {0.0, 1e-5, 1e-2}) {
@@ -850,7 +878,10 @@ static constexpr char GeomDistanceTestingModel[] = R"(
)";
TEST_F(SupportTest, GeomDistance) {
mjModel* model = LoadModelFromString(GeomDistanceTestingModel);
char error[1024];
mjModel* model =
LoadModelFromString(GeomDistanceTestingModel, error, sizeof(error));
ASSERT_THAT(model, NotNull()) << error;
mjData* data = mj_makeData(model);
mj_kinematics(model, data);
@@ -920,7 +951,10 @@ static constexpr char kSetKeyframeTestingModel[] = R"(
)";
TEST_F(SupportTest, SetKeyframe) {
mjModel* model = LoadModelFromString(kSetKeyframeTestingModel);
char error[1024];
mjModel* model =
LoadModelFromString(kSetKeyframeTestingModel, error, sizeof(error));
ASSERT_THAT(model, NotNull()) << error;
mjData* data = mj_makeData(model);
data->ctrl[0] = 1;