diff --git a/test/engine/engine_core_constraint_test.cc b/test/engine/engine_core_constraint_test.cc index a0c2a477..fee8ba7d 100644 --- a/test/engine/engine_core_constraint_test.cc +++ b/test/engine/engine_core_constraint_test.cc @@ -215,9 +215,9 @@ TEST_F(CoreConstraintTest, MulJacVecIsland) { for (mjtJacobian sparsity : {mjJAC_DENSE, mjJAC_SPARSE}) { model->opt.jacobian = sparsity; - // simulate for 0.3 seconds + // simulate for 0.2 seconds mj_resetData(model, data); - while (data->time < 0.3) { + while (data->time < 0.2) { mj_step(model, data); } mj_forward(model, data); diff --git a/test/engine/engine_core_smooth_test.cc b/test/engine/engine_core_smooth_test.cc index 6d123d1a..52f95e50 100644 --- a/test/engine/engine_core_smooth_test.cc +++ b/test/engine/engine_core_smooth_test.cc @@ -311,9 +311,9 @@ TEST_F(CoreSmoothTest, SolveMIsland) { } mju_copy(res, vec, nv); - // simulate for 0.3 seconds + // simulate for 0.2 seconds mj_resetData(model, data); - while (data->time < 0.3) { + while (data->time < 0.2) { mj_step(model, data); } mj_forward(model, data); diff --git a/test/engine/engine_island_test.cc b/test/engine/engine_island_test.cc index 1c631254..2e74bfe3 100644 --- a/test/engine/engine_island_test.cc +++ b/test/engine/engine_island_test.cc @@ -346,7 +346,7 @@ TEST_F(IslandTest, IslandEfc) { mjModel* model = mj_loadXML(xml_path.c_str(), nullptr, nullptr, 0); mjData* data = mj_makeData(model); - while (data->time < 0.3) { + while (data->time < 0.2) { mj_step(model, data); } @@ -356,25 +356,27 @@ TEST_F(IslandTest, IslandEfc) { int nisland = data->nisland; // expect island structure to correspond to comment at top of xml - EXPECT_EQ(nisland, 2); + EXPECT_EQ(nisland, 3); EXPECT_EQ(data->ne, 1); - EXPECT_EQ(data->nf, 1); + EXPECT_EQ(data->nf, 2); EXPECT_EQ(data->nl, 1); - EXPECT_EQ(nefc, 7); + EXPECT_EQ(nefc, 24); EXPECT_THAT(AsVector(data->dof_island, nv), - ElementsAre(0, -1, 0, 0, 0, 1, 0)); - EXPECT_THAT(AsVector(data->island_dofnum, nisland), ElementsAre(5, 1)); - EXPECT_THAT(AsVector(data->island_dofadr, nisland), ElementsAre(0, 5)); + ElementsAre(0, -1, 0, 0, 0, 1, 2, 0, 1, 1, 1, 1, 1, 1)); + EXPECT_THAT(AsVector(data->island_dofnum, nisland), ElementsAre(5, 7, 1)); + EXPECT_THAT(AsVector(data->island_dofadr, nisland), ElementsAre(0, 5, 12)); EXPECT_THAT(AsVector(data->island_dofind, nv), - ElementsAre(0, 2, 3, 4, 6, 5, -1)); + ElementsAre(0, 2, 3, 4, 7, 5, 8, 9, 10, 11, 12, 13, 6, -1)); EXPECT_THAT(AsVector(data->dof_islandind, nv), - ElementsAre(0, -1, 1, 2, 3, 0, 4)); + ElementsAre(0, -1, 1, 2, 3, 0, 0, 4, 1, 2, 3, 4, 5, 6)); EXPECT_THAT(AsVector(data->efc_island, nefc), - ElementsAre(0, 1, 0, 0, 0, 0, 0)); - EXPECT_THAT(AsVector(data->island_efcnum, nisland), ElementsAre(6, 1)); - EXPECT_THAT(AsVector(data->island_efcadr, nisland), ElementsAre(0, 6)); + ElementsAre(0, 1, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1)); + EXPECT_THAT(AsVector(data->island_efcnum, nisland), ElementsAre(6, 17, 1)); + EXPECT_THAT(AsVector(data->island_efcadr, nisland), ElementsAre(0, 6, 23)); EXPECT_THAT(AsVector(data->island_efcind, nefc), - ElementsAre(0, 2, 3, 4, 5, 6, 1)); + ElementsAre(0, 3, 4, 5, 6, 7, 1, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 2)); mj_deleteData(data); mj_deleteModel(model); diff --git a/test/engine/engine_support_test.cc b/test/engine/engine_support_test.cc index a33b3f28..1d7b8511 100644 --- a/test/engine/engine_support_test.cc +++ b/test/engine/engine_support_test.cc @@ -469,9 +469,9 @@ TEST_F(SupportTest, MulMIsland) { vec[i] = 0.2 + 0.3*i; } - // simulate for 0.3 seconds + // simulate for 0.2 seconds mj_resetData(model, data); - while (data->time < 0.3) { + while (data->time < 0.2) { mj_step(model, data); } mj_forward(model, data); diff --git a/test/engine/testdata/island/island_efc.xml b/test/engine/testdata/island/island_efc.xml index 0be5e69e..3f30d9ec 100644 --- a/test/engine/testdata/island/island_efc.xml +++ b/test/engine/testdata/island/island_efc.xml @@ -1,10 +1,10 @@ @@ -16,15 +16,22 @@ + + + + + + + @@ -37,14 +44,26 @@ + + + + + + + + + + + +