diff --git a/tests/unit/viewport-layout.test.ts b/tests/unit/viewport-layout.test.ts new file mode 100644 index 00000000..5e657f3b --- /dev/null +++ b/tests/unit/viewport-layout.test.ts @@ -0,0 +1,40 @@ +import { describe, expect, it } from "vitest"; + +import { + createDefaultViewportLayoutState, + getViewportDisplayModeLabel, + getViewportLayoutModeLabel, + getViewportPanelLabel +} from "../../src/viewport-three/viewport-layout"; + +describe("viewport layout", () => { + it("defaults to a quad-ready panel arrangement with orthographic authoring panes", () => { + const layout = createDefaultViewportLayoutState(); + + expect(layout.layoutMode).toBe("single"); + expect(layout.activePanelId).toBe("topLeft"); + expect(layout.panels.topLeft).toMatchObject({ + viewMode: "perspective", + displayMode: "normal" + }); + expect(layout.panels.topRight).toMatchObject({ + viewMode: "top", + displayMode: "authoring" + }); + expect(layout.panels.bottomLeft).toMatchObject({ + viewMode: "front", + displayMode: "authoring" + }); + expect(layout.panels.bottomRight).toMatchObject({ + viewMode: "side", + displayMode: "authoring" + }); + }); + + it("exposes readable labels for the layout and panel chrome", () => { + expect(getViewportLayoutModeLabel("single")).toBe("Single View"); + expect(getViewportLayoutModeLabel("quad")).toBe("4-Panel"); + expect(getViewportDisplayModeLabel("authoring")).toBe("Authoring"); + expect(getViewportPanelLabel("topRight")).toBe("Top Right"); + }); +});