test(editor): cover clipboard selection undo state

This commit is contained in:
ayuan9957 2026-06-23 22:01:47 +08:00
parent 99ea260af4
commit 9c7c0a1798

View File

@ -417,26 +417,32 @@ void MetaCoreTestHierarchyEditingCommandsDirtyAndUndo() {
editorContext.SelectOnly(*createdId);
const std::size_t countBeforeDuplicate = scene.GetGameObjects().size();
MetaCoreExpect(clipboardService->DuplicateSelection(editorContext), "DuplicateSelection command should duplicate selected object");
const MetaCore::MetaCoreId duplicatedId = editorContext.GetActiveObjectId();
MetaCoreExpect(scene.GetGameObjects().size() > countBeforeDuplicate, "DuplicateSelection should add at least one object");
MetaCoreExpect(duplicatedId != 0 && duplicatedId != *createdId, "DuplicateSelection should select duplicated object");
MetaCoreExpect(scenePersistenceService->IsSceneDirty(), "DuplicateSelection command should mark scene dirty");
MetaCoreExpect(editorContext.UndoCommand(), "Undo DuplicateSelection should succeed");
MetaCoreExpect(scene.GetGameObjects().size() == countBeforeDuplicate, "Undo DuplicateSelection should restore object count");
MetaCoreExpect(editorContext.GetActiveObjectId() == *createdId, "Undo DuplicateSelection should restore source object selection");
MetaCoreExpect(!scenePersistenceService->IsSceneDirty(), "Undo DuplicateSelection should restore clean baseline");
MetaCoreExpect(editorContext.RedoCommand(), "Redo DuplicateSelection should succeed");
MetaCoreExpect(scene.GetGameObjects().size() > countBeforeDuplicate, "Redo DuplicateSelection should add object again");
MetaCoreExpect(editorContext.GetActiveObjectId() == duplicatedId, "Redo DuplicateSelection should restore duplicated object selection");
MetaCoreExpect(scenePersistenceService->SaveCurrentScene(editorContext), "Hierarchy command scene should save after duplicate");
const MetaCore::MetaCoreId duplicatedId = editorContext.GetActiveObjectId();
MetaCoreExpect(duplicatedId != 0 && duplicatedId != *createdId, "DuplicateSelection should select duplicated object");
const std::size_t countBeforeDelete = scene.GetGameObjects().size();
MetaCoreExpect(clipboardService->DeleteSelection(editorContext), "DeleteSelection command should delete selected object");
MetaCoreExpect(scene.GetGameObjects().size() < countBeforeDelete, "DeleteSelection should remove selected object");
MetaCoreExpect(editorContext.GetActiveObjectId() == 0, "DeleteSelection should clear active selection");
MetaCoreExpect(editorContext.GetSelectedObjectIds().empty(), "DeleteSelection should clear selected object list");
MetaCoreExpect(scenePersistenceService->IsSceneDirty(), "DeleteSelection command should mark scene dirty");
MetaCoreExpect(editorContext.UndoCommand(), "Undo DeleteSelection should succeed");
MetaCoreExpect(scene.GetGameObjects().size() == countBeforeDelete, "Undo DeleteSelection should restore object count");
MetaCoreExpect(editorContext.GetActiveObjectId() == duplicatedId, "Undo DeleteSelection should restore deleted object selection");
MetaCoreExpect(!scenePersistenceService->IsSceneDirty(), "Undo DeleteSelection should restore clean baseline");
MetaCoreExpect(editorContext.RedoCommand(), "Redo DeleteSelection should succeed");
MetaCoreExpect(scene.GetGameObjects().size() < countBeforeDelete, "Redo DeleteSelection should remove object again");
MetaCoreExpect(editorContext.GetSelectedObjectIds().empty(), "Redo DeleteSelection should restore cleared selection");
coreServicesModule->Shutdown(moduleRegistry);
moduleRegistry.ShutdownServices();