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()); + +}