new_editor: tighten window workspace validation
This commit is contained in:
@@ -8,6 +8,8 @@ namespace {
|
||||
using XCEngine::UI::Editor::AreUIEditorWorkspaceModelsEquivalent;
|
||||
using XCEngine::UI::Editor::AreUIEditorWorkspaceSessionsEquivalent;
|
||||
using XCEngine::UI::Editor::BuildDefaultUIEditorWindowWorkspaceController;
|
||||
using XCEngine::UI::Editor::BuildDefaultUIEditorWindowWorkspaceSet;
|
||||
using XCEngine::UI::Editor::BuildDefaultUIEditorWorkspaceSession;
|
||||
using XCEngine::UI::Editor::BuildUIEditorWorkspacePanel;
|
||||
using XCEngine::UI::Editor::BuildUIEditorWorkspaceSingleTabStack;
|
||||
using XCEngine::UI::Editor::BuildUIEditorWorkspaceSplit;
|
||||
@@ -20,10 +22,13 @@ using XCEngine::UI::Editor::UIEditorPanelRegistry;
|
||||
using XCEngine::UI::Editor::UIEditorWindowWorkspaceController;
|
||||
using XCEngine::UI::Editor::UIEditorWindowWorkspaceOperationStatus;
|
||||
using XCEngine::UI::Editor::UIEditorWindowWorkspaceSet;
|
||||
using XCEngine::UI::Editor::UIEditorWindowWorkspaceState;
|
||||
using XCEngine::UI::Editor::UIEditorWindowWorkspaceValidationCode;
|
||||
using XCEngine::UI::Editor::UIEditorWorkspaceDockPlacement;
|
||||
using XCEngine::UI::Editor::UIEditorWorkspaceModel;
|
||||
using XCEngine::UI::Editor::UIEditorWorkspaceNodeKind;
|
||||
using XCEngine::UI::Editor::UIEditorWorkspaceSplitAxis;
|
||||
using XCEngine::UI::Editor::ValidateUIEditorWindowWorkspaceSet;
|
||||
|
||||
UIEditorPanelRegistry BuildPanelRegistry() {
|
||||
UIEditorPanelRegistry registry = {};
|
||||
@@ -448,3 +453,31 @@ TEST(UIEditorWindowWorkspaceControllerTest, RejectedCrossWindowMoveFromMissingSo
|
||||
EXPECT_EQ(controller.GetWindowSet().primaryWindowId, "main-window");
|
||||
EXPECT_TRUE(AreWindowSetsEquivalent(controller.GetWindowSet(), windowSetBefore));
|
||||
}
|
||||
|
||||
TEST(UIEditorWindowWorkspaceControllerTest, ValidationRejectsDuplicatePanelAcrossWindows) {
|
||||
const UIEditorPanelRegistry registry = BuildPanelRegistry();
|
||||
|
||||
UIEditorWindowWorkspaceSet windowSet =
|
||||
BuildDefaultUIEditorWindowWorkspaceSet(registry, BuildWorkspace());
|
||||
windowSet.activeWindowId = "doc-a-window";
|
||||
|
||||
UIEditorWindowWorkspaceState duplicateWindow = {};
|
||||
duplicateWindow.windowId = "doc-a-window";
|
||||
duplicateWindow.workspace.root = BuildUIEditorWorkspaceSingleTabStack(
|
||||
"doc-a-window-root",
|
||||
"doc-a",
|
||||
"Document A",
|
||||
true);
|
||||
duplicateWindow.workspace.activePanelId = "doc-a";
|
||||
duplicateWindow.session =
|
||||
BuildDefaultUIEditorWorkspaceSession(registry, duplicateWindow.workspace);
|
||||
windowSet.windows.push_back(std::move(duplicateWindow));
|
||||
|
||||
const auto validation = ValidateUIEditorWindowWorkspaceSet(registry, windowSet);
|
||||
EXPECT_EQ(
|
||||
validation.code,
|
||||
UIEditorWindowWorkspaceValidationCode::DuplicatePanelAcrossWindows);
|
||||
EXPECT_NE(validation.message.find("doc-a"), std::string::npos);
|
||||
EXPECT_NE(validation.message.find("main-window"), std::string::npos);
|
||||
EXPECT_NE(validation.message.find("doc-a-window"), std::string::npos);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user