Improve PackedScene unit test by covering more methods

This commit is contained in:
Septian 2023-08-20 20:56:27 +07:00
parent 5444afae63
commit a31120b6f6

View File

@ -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