42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
import {
|
|
clampSplitPaneSize,
|
|
splitPaneSizeFromPointer,
|
|
} from "/packages/ui/split-pane.js";
|
|
|
|
test("분할 패널 폭이 설정 범위와 작업 영역 최소 폭을 지킨다", () => {
|
|
const metrics = {
|
|
containerSize: 1400,
|
|
separatorSize: 12,
|
|
minSize: 360,
|
|
maxSize: 720,
|
|
minMainSize: 560,
|
|
};
|
|
assertEqual(clampSplitPaneSize(620, metrics), 620, "requested width");
|
|
assertEqual(clampSplitPaneSize(900, metrics), 720, "hard maximum");
|
|
assertEqual(clampSplitPaneSize(200, metrics), 360, "configured minimum");
|
|
assertEqual(
|
|
clampSplitPaneSize(720, { ...metrics, containerSize: 981 }),
|
|
409,
|
|
"workspace-aware maximum",
|
|
);
|
|
});
|
|
|
|
test("분리선 pointer 좌표가 시작·끝 패널 폭으로 변환된다", () => {
|
|
const common = {
|
|
pointerX: 506,
|
|
containerLeft: 100,
|
|
containerRight: 1500,
|
|
separatorSize: 12,
|
|
};
|
|
assertEqual(
|
|
splitPaneSizeFromPointer({ ...common, panelSide: "start" }),
|
|
400,
|
|
"start panel width",
|
|
);
|
|
assertEqual(
|
|
splitPaneSizeFromPointer({ ...common, panelSide: "end" }),
|
|
988,
|
|
"end panel width",
|
|
);
|
|
});
|