diff options
| author | Septian <septgsk@gmail.com> | 2023-08-09 00:12:34 +0700 |
|---|---|---|
| committer | Septian <septgsk@gmail.com> | 2023-08-09 00:28:53 +0700 |
| commit | 56d7ff6e93bcf720983f6d57671953508116e541 (patch) | |
| tree | 4bf47f93e02d0898f52f2b9cfec901e173823840 | |
| parent | f2acfb1ffc94d0e381064070108e7a773d86177d (diff) | |
| download | redot-engine-56d7ff6e93bcf720983f6d57671953508116e541.tar.gz | |
Improve PackedScene unit test for complex scene
| -rw-r--r-- | tests/scene/test_packed_scene.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/scene/test_packed_scene.h b/tests/scene/test_packed_scene.h index 9e525ab5bf..3517aba31f 100644 --- a/tests/scene/test_packed_scene.h +++ b/tests/scene/test_packed_scene.h @@ -109,6 +109,47 @@ TEST_CASE("[PackedScene] Instantiate Packed Scene") { memdelete(instance); } +TEST_CASE("[PackedScene] Instantiate Packed Scene With Children") { + // Create a scene to pack. + Node *scene = memnew(Node); + scene->set_name("TestScene"); + + // Add persisting child nodes to the scene. + Node *child1 = memnew(Node); + child1->set_name("Child1"); + scene->add_child(child1); + child1->set_owner(scene); + + Node *child2 = memnew(Node); + child2->set_name("Child2"); + scene->add_child(child2); + child2->set_owner(scene); + + // Add non persisting child node to the scene. + Node *child3 = memnew(Node); + child3->set_name("Child3"); + scene->add_child(child3); + + // Pack the scene. + PackedScene packed_scene; + packed_scene.pack(scene); + + // Instantiate the packed scene. + Node *instance = packed_scene.instantiate(); + CHECK(instance != nullptr); + CHECK(instance->get_name() == "TestScene"); + + // Validate the child nodes of the instantiated scene. + CHECK(instance->get_child_count() == 2); + CHECK(instance->get_child(0)->get_name() == "Child1"); + CHECK(instance->get_child(1)->get_name() == "Child2"); + CHECK(instance->get_child(0)->get_owner() == instance); + CHECK(instance->get_child(1)->get_owner() == instance); + + memdelete(scene); + memdelete(instance); +} + } // namespace TestPackedScene #endif // TEST_PACKED_SCENE_H |
