summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-01-04 14:24:46 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-01-04 14:24:46 +0100
commit8ac674287c5b77302cdc3d29b1e101064190b07f (patch)
tree3535cb3e204b90a012179180057ea39b19a72cee /tests
parentea3e3b088a1c7dc124207327ad0a11d54e710e9a (diff)
parenta31120b6f615b39f517a8b515d1da172afd25930 (diff)
downloadredot-engine-8ac674287c5b77302cdc3d29b1e101064190b07f.tar.gz
Merge pull request #80819 from sepTN/test-packed-scene-v3
Improve PackedScene unit test by covering more methods
Diffstat (limited to 'tests')
-rw-r--r--tests/scene/test_packed_scene.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/scene/test_packed_scene.h b/tests/scene/test_packed_scene.h
index 3517aba31f..1e784c199d 100644
--- a/tests/scene/test_packed_scene.h
+++ b/tests/scene/test_packed_scene.h
@@ -150,6 +150,71 @@ TEST_CASE("[PackedScene] Instantiate Packed Scene With Children") {
memdelete(instance);
}
+TEST_CASE("[PackedScene] Set Path") {
+ // Create a scene to pack.
+ Node *scene = memnew(Node);
+ scene->set_name("TestScene");
+
+ // Pack the scene.
+ PackedScene packed_scene;
+ packed_scene.pack(scene);
+
+ // Set a new path for the packed scene.
+ const String new_path = "NewTestPath";
+ packed_scene.set_path(new_path);
+
+ // Check if the path has been set correctly.
+ Ref<SceneState> state = packed_scene.get_state();
+ CHECK(state.is_valid());
+ CHECK(state->get_path() == new_path);
+
+ memdelete(scene);
+}
+
+TEST_CASE("[PackedScene] Replace State") {
+ // Create a scene to pack.
+ Node *scene = memnew(Node);
+ scene->set_name("TestScene");
+
+ // Pack the scene.
+ PackedScene packed_scene;
+ packed_scene.pack(scene);
+
+ // Create another scene state to replace with.
+ Ref<SceneState> new_state = memnew(SceneState);
+ new_state->set_path("NewPath");
+
+ // Replace the state.
+ packed_scene.replace_state(new_state);
+
+ // Check if the state has been replaced.
+ Ref<SceneState> state = packed_scene.get_state();
+ CHECK(state.is_valid());
+ CHECK(state == new_state);
+
+ memdelete(scene);
+}
+
+TEST_CASE("[PackedScene] Recreate State") {
+ // Create a scene to pack.
+ Node *scene = memnew(Node);
+ scene->set_name("TestScene");
+
+ // Pack the scene.
+ PackedScene packed_scene;
+ packed_scene.pack(scene);
+
+ // Recreate the state.
+ packed_scene.recreate_state();
+
+ // Check if the state has been recreated.
+ Ref<SceneState> state = packed_scene.get_state();
+ CHECK(state.is_valid());
+ CHECK(state->get_node_count() == 0); // Since the state was recreated, it should be empty.
+
+ memdelete(scene);
+}
+
} // namespace TestPackedScene
#endif // TEST_PACKED_SCENE_H