@@ -675,7 +675,7 @@ TEST_CASE("Organization", "[nodegraph]")
675675 CHECK (nodeGraph->getBackdrops ().empty ());
676676}
677677
678- TEST_CASE ( " Node Definition Creation " , " [nodedef] " )
678+ void testNodeDefCreationFromGraph (mx::DefinitionOptions options )
679679{
680680 mx::FileSearchPath searchPath = mx::getDefaultDataSearchPath ();
681681 mx::DocumentPtr stdlib = mx::createDocument ();
@@ -714,10 +714,12 @@ TEST_CASE("Node Definition Creation", "[nodedef]")
714714 bool isDefaultVersion = false ;
715715 const std::string NODENAME = graph->getName ();
716716
717+
717718 // Create a new functional graph and definition from a compound graph
719+ bool addAsChild = options.addImplementationAsChild ;
718720 std::string newNodeDefName = doc->createValidChildName (" ND_" + graph->getName ());
719721 std::string newGraphName = doc->createValidChildName (" NG_" + graph->getName ());
720- mx::NodeDefPtr nodeDef = doc->addNodeDefFromGraph (graph, newNodeDefName, NODENAME, newGraphName);
722+ mx::NodeDefPtr nodeDef = doc->addNodeDefFromGraph (graph, newNodeDefName, NODENAME, newGraphName, &options );
721723 REQUIRE (nodeDef != nullptr );
722724 nodeDef->setVersionString (VERSION1);
723725 nodeDef->setDefaultVersion (isDefaultVersion);
@@ -759,9 +761,16 @@ TEST_CASE("Node Definition Creation", "[nodedef]")
759761 }
760762
761763 // Check validity of new functional nodegraph
762- mx::NodeGraphPtr newGraph = doc->getNodeGraph (newGraphName);
764+ mx::NodeGraphPtr newGraph = !addAsChild ? doc->getNodeGraph (newGraphName) : nodeDef-> getChildOfType <mx::NodeGraph> (newGraphName);
763765 REQUIRE (newGraph != nullptr );
764- REQUIRE (newGraph->getNodeDefString () == newNodeDefName);
766+ if (!addAsChild)
767+ {
768+ REQUIRE (newGraph->getNodeDefString () == newNodeDefName);
769+ }
770+ else
771+ {
772+ REQUIRE (newGraph->getNodeDefString ().empty ());
773+ }
765774 mx::ConstInterfaceElementPtr decl = newGraph->getDeclaration ();
766775 REQUIRE (decl->getName () == nodeDef->getName ());
767776 REQUIRE (doc->validate ());
@@ -826,6 +835,23 @@ TEST_CASE("Node Definition Creation", "[nodedef]")
826835 REQUIRE (doc->validate ());
827836}
828837
838+ TEST_CASE (" Node Definition Creation" , " [nodedef_create]" )
839+ {
840+ mx::DefinitionOptions defOptions;
841+
842+ SECTION (" Without implementation as child" )
843+ {
844+ defOptions.addImplementationAsChild = false ;
845+ testNodeDefCreationFromGraph (defOptions);
846+ }
847+
848+ SECTION (" With implementation as child" )
849+ {
850+ defOptions.addImplementationAsChild = true ;
851+ testNodeDefCreationFromGraph (defOptions);
852+ }
853+ }
854+
829855TEST_CASE (" Set Name Global" , " [node, nodegraph]" )
830856{
831857 mx::DocumentPtr doc = mx::createDocument ();
0 commit comments