@@ -96,6 +96,13 @@ class TestNode : public Node {
9696
9797 void set_exported_nodes (const Array &p_nodes) { exported_nodes = p_nodes; }
9898 Array get_exported_nodes () const { return exported_nodes; }
99+
100+ TestNode () {
101+ Node *internal = memnew (Node);
102+ add_child (internal, false , INTERNAL_MODE_FRONT);
103+ internal = memnew (Node);
104+ add_child (internal, false , INTERNAL_MODE_BACK);
105+ }
99106};
100107
101108TEST_CASE (" [SceneTree][Node] Testing node operations with a very simple scene tree" ) {
@@ -498,6 +505,24 @@ TEST_CASE("[SceneTree][Node] Testing node operations with a more complex simple
498505 memdelete (node2);
499506}
500507
508+ TEST_CASE (" [SceneTree][Node] Duplicating node with internal children" ) {
509+ GDREGISTER_CLASS (TestNode);
510+
511+ TestNode *node = memnew (TestNode);
512+ Node *child = memnew (Node);
513+ child->set_name (" Child" );
514+ node->add_child (child);
515+
516+ int child_count = node->get_child_count ();
517+
518+ Node *dup = node->duplicate ();
519+ CHECK (dup->get_child_count () == child_count);
520+ CHECK (dup->has_node (String (" Child" )));
521+
522+ memdelete (node);
523+ memdelete (dup);
524+ }
525+
501526TEST_CASE (" [SceneTree][Node]Exported node checks" ) {
502527 TestNode *node = memnew (TestNode);
503528 SceneTree::get_singleton ()->get_root ()->add_child (node);
@@ -523,7 +548,7 @@ TEST_CASE("[SceneTree][Node]Exported node checks") {
523548
524549 TestNode *dup = Object::cast_to<TestNode>(node->duplicate ());
525550 Node *new_exported = Object::cast_to<Node>(dup->get (" exported_node" ));
526- CHECK (new_exported == dup->get_child (0 ));
551+ CHECK (new_exported == dup->get_child (0 , false ));
527552
528553 memdelete (dup);
529554 }
@@ -578,10 +603,10 @@ TEST_CASE("[SceneTree][Node]Exported node checks") {
578603 root->add_child (sub_child);
579604 sub_child->set_owner (root);
580605
581- sub_child->set (" exported_node" , sub_child->get_child (1 ));
606+ sub_child->set (" exported_node" , sub_child->get_child (1 , false ));
582607
583608 children = Array ();
584- children.append (sub_child->get_child (1 ));
609+ children.append (sub_child->get_child (1 , false ));
585610 sub_child->set (" exported_nodes" , children);
586611
587612 Ref<PackedScene> ps2;
0 commit comments