feat(spreadsheet): 2단계 — 엑셀 단축키 전수 표(데이터 파일)

키 53 개(이동·고르기·편집·복사붙이기·찾기·메모·서식·시트·범위밖) — 뜻·동작 이름·지금
상태(됨·안됨·범위밖)·자리를 적음. `spreadsheet_keys.ts`(D) 를 오늘 기준으로 읽고 매김.
안 된 것 19 개(Ctrl+B/I/U·Ctrl+1 은 오늘 대화상자로 됨 처리·F4 절대참조 돌리기·Alt+= 자동합계·
Ctrl+-/Ctrl+Shift++ 칸 넣기지우기·Ctrl+9/0 숨김·Ctrl+;/Shift+; 날짜시간·Ctrl+PageUp/Down
시트 이동·Ctrl+클릭 여러범위·테두리 두 개·Shift+F11 새 시트) — 잇는 법은 파일 머리에.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K7JS47SacjPxZ718QsZKyr
This commit is contained in:
2026-09-27 21:02:28 +09:00
co-authored by Claude Sonnet 5
parent 6b08058a58
commit 1a4e24b8a9
2 changed files with 424 additions and 0 deletions
@@ -0,0 +1,65 @@
/* =============================================================================
* test_stage2_shortcuts.ts — spreadsheet_shortcuts 시험. 돌리기: node --experimental-strip-types <이 파일>
* ========================================================================== */
import {
findShortcut,
SHORTCUTS,
unimplemented,
} from "../../../A00_Common/spreadsheet/spreadsheet_shortcuts.ts";
import { assertEqual } from "./test_stage2_helpers.ts";
assertEqual(SHORTCUTS.length > 40, true, "충분히 전수(40 개 넘음)");
// 브레인이 콕 집은 키가 다 있는지
const 요청키 = [
"Ctrl+B",
"Ctrl+I",
"Ctrl+U",
"Ctrl+1",
"Ctrl+D",
"Ctrl+R",
"Ctrl+;",
"Shift+;", // 표기는 Ctrl+Shift+; — 부분 문자열로도 찾아짐 확인
"Alt+Enter",
"Ctrl+-",
"Ctrl+Shift++",
"Ctrl+Space",
"Shift+Space",
"F4",
"Ctrl+Z",
"Ctrl+Y",
"Ctrl+F",
"Ctrl+H",
"Home",
"Ctrl+Home",
"Ctrl+End",
"Alt+=",
];
for (const k of 요청키) {
if (k === "Shift+;") continue; // 실제 표기는 Ctrl+Shift+; 하나로 묶임 — 아래서 따로 확인
assertEqual(findShortcut(k) !== null, true, `요청 키 있음: ${k}`);
}
assertEqual(findShortcut("Ctrl+Shift+;") !== null, true, "Ctrl+Shift+; 있음");
assertEqual(findShortcut("Ctrl+B")?.동작, "toggleBold", "Ctrl+B 동작 이름");
assertEqual(findShortcut("ctrl+b")?.동작, "toggleBold", "findShortcut 대소문자 안 가림");
assertEqual(findShortcut("Ctrl+없는키"), null, "없는 키는 null");
const missing = unimplemented();
assertEqual(missing.length > 0, true, "안 된 것 목록이 있음");
assertEqual(
missing.every((s) => s.동작 !== "—" && s.자리.length > 0),
true,
"안 된 것도 동작 이름 · 만들 자리가 다 있음",
);
assertEqual(
SHORTCUTS.filter((s) => s.상태 === "범위밖").every((s) => s.자리.length > 0),
true,
"범위밖도 왜 안 하는지 적혀 있음",
);
console.log(`안 된 것 ${missing.length} 개: ${missing.map((s) => s.키).join(" · ")}`);
if (process.exitCode) process.exit(process.exitCode);
console.log("spreadsheet_shortcuts 시험 끝");