diff --git a/Sofa/framework/Core/src/sofa/core/objectmodel/BaseData.cpp b/Sofa/framework/Core/src/sofa/core/objectmodel/BaseData.cpp index 25dd10ba254..d449b0b7a7e 100644 --- a/Sofa/framework/Core/src/sofa/core/objectmodel/BaseData.cpp +++ b/Sofa/framework/Core/src/sofa/core/objectmodel/BaseData.cpp @@ -130,7 +130,7 @@ bool BaseData::setParent(BaseData* parent, const std::string& path) m_counter++; } // the referenced parent data has not been created yet but a path has been given - else if (!path.empty()) + else if (!path.empty()) { parentData.setPath(path); } diff --git a/Sofa/framework/SimpleApi/test/SimpleApi_test.cpp b/Sofa/framework/SimpleApi/test/SimpleApi_test.cpp index dc5ae56c599..a1226dc8614 100644 --- a/Sofa/framework/SimpleApi/test/SimpleApi_test.cpp +++ b/Sofa/framework/SimpleApi/test/SimpleApi_test.cpp @@ -90,3 +90,45 @@ TEST_F(SimpleApi_test, createParamString ) { ASSERT_TRUE( testParamString() ); } + +TEST(SimpleApi_test_solo, testIsSetWithDataLink) +{ + const Simulation::SPtr simu = createSimulation("DAG"); + const Node::SPtr root = createRootNode(simu, "root"); + + // test not set + const auto obj1 = createObject(root, "DefaultAnimationLoop", { + {"name", "loop1"} + }); + auto* objdata1 = obj1->findData("printLog"); + ASSERT_FALSE(objdata1->isSet()); + + // test set + const auto obj2 = createObject(root, "DefaultAnimationLoop", { + {"name", "loop2"}, + {"printLog", "false"} + }); + auto* objdata2 = obj2->findData("printLog"); + ASSERT_TRUE(objdata2->isSet()); + + // test set through a link of a already created object + const auto obj3 = createObject(root, "DefaultAnimationLoop", { + {"name", "loop3"}, + {"printLog", "@/loop2.printLog"} + }); + auto* objdata3 = obj3->findData("printLog"); + ASSERT_TRUE(objdata3->isSet()); + + // test set through a link of a not yet created object (deferred linking) + const auto obj4 = createObject(root, "DefaultAnimationLoop", { + {"name", "loop4"}, + {"printLog", "@/loop5.printLog"} + }); + const auto obj5 = createObject(root, "DefaultAnimationLoop", { + {"name", "loop5"}, + {"printLog", "true"} + }); + auto* objdata4 = obj4->findData("printLog"); + ASSERT_TRUE(objdata4->isSet()); + +}