feat(spreadsheet): 알약 줄 끝 연결 모두 해제(81-4)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MPcuokNm1ZR2kqgGGDfaJA
This commit is contained in:
2026-10-08 13:04:09 +09:00
co-authored by Claude Sonnet 5
parent 3f5dfd47b1
commit e0cbb1f17d
5 changed files with 83 additions and 8 deletions
@@ -6,6 +6,7 @@ import {
linkAreaCell,
linkCommand,
linksAt,
unlinkAllCommand,
} from "../../../A00_Common/spreadsheet/spreadsheet_link_set";
import type { Command, Workbook } from "../../../A00_Common/spreadsheet/spreadsheet_types";
@@ -152,4 +153,20 @@ eq(
linkHues(["철근|ton"]).get("철근|ton"),
);
// unlinkAllCommand(81-4) — 여러 시트에 걸친 키를 한꺼번에 뺌 · 되돌리기 한 번
b = book();
undo = run(b, unlinkAllCommand(b, ["깔기|㎡", "치기|㎥"]));
eq("모두 해제 — 두 시트 다 빠짐(연결 칸 없어짐)", links(b), [null, null]);
run(b, undo);
eq("모두 해제 되돌림", links(b), links(book()));
b = book();
run(b, unlinkAllCommand(b, ["깔기|㎡"]));
eq("모두 해제 — 한 시트만 바뀌면 시트통째 하나", links(b), [
null,
[{ 키: "치기|㎥", 이름: "치기", 칸: "C3" }],
]);
eq("모두 해제 — 바뀔 것 없음 = null", unlinkAllCommand(book(), ["없음"]), null);
console.log(JSON.stringify({ pass, fail: failures.length, failures }));
@@ -55,7 +55,7 @@ def test_setLink_순수_길():
assert run.stdout.strip(), run.stderr
result = json.loads(run.stdout)
assert result["fail"] == 0, result["failures"]
assert result["pass"] == 29
assert result["pass"] == 33
def test_손잡이_setLink_몸():