- 고름 대기 칸에 후보(앞 셋)마다 줄 비교 표(줄 · 엑셀 품 · 기초 품 · 꼴 배지) · 후보 고름 칸과 동기 · 칸 글에 같음 · 품 다름 수 · 판정 · 미리 고름 그대로 - 못옮김 잇기 창 · 안 이은 줄 창에 M01 요소 후보 셋 단추(누르면 이음 고름) · 안 이은 줄 창 기초 후보 칸에는 요소 후보가 안 섞이게 가름 - 새 파일 Hopyo_Compare.ts · 새 지킴 시험 test_746_2_hopyo_compare_screen Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
49 lines
1.8 KiB
Python
49 lines
1.8 KiB
Python
"""746-2 지킴 — 불러오기 고르기 창 후보 블록 줄 비교 · 요소 후보 화면(요구 585).
|
|
|
|
서버 없이 소스로 잡음: 고름 대기 칸이 줄 비교 표를 붙임 · 못옮김 창 · 안 이은 줄 창이 요소 후보 단추를 붙임 ·
|
|
안 이은 줄 창의 기초 후보 칸에 요소 후보(`키`)가 섞여 들어가지 않음 · 서버 응답 칸 이름 · 부품 상자만 · 700 줄.
|
|
"""
|
|
|
|
import re
|
|
from pathlib import Path
|
|
|
|
M02 = Path(__file__).resolve().parents[2] / "M02_MasterTemplete"
|
|
|
|
|
|
def _src(name: str) -> str:
|
|
return (M02 / f"M02_MasterTemplete_Hopyo_{name}.ts").read_text(encoding="utf-8")
|
|
|
|
|
|
def test_고름_대기_칸이_줄_비교_표를_붙임():
|
|
sk = _src("WizardSk")
|
|
assert "compareView(x.후보)" in sk and "cmp?.show(pick.select.value)" in sk
|
|
assert "compareBrief(c.줄비교)" in sk # 선택 칸 글에 같음 · 품다름 수
|
|
|
|
|
|
def test_못옮김_창_안_이은_줄_창이_요소_후보_단추를_붙임():
|
|
assert "elemChoices(x.후보" in _src("Lost")
|
|
left = _src("Left")
|
|
assert "elemChoices(row.후보.filter(isElem)" in left
|
|
assert (
|
|
"row.후보.filter((c): c is SangeunCand => !isElem(c))" in left
|
|
) # 기초 후보 칸에는 요소 후보 안 듦
|
|
|
|
|
|
def test_서버_응답_칸_이름_그대로():
|
|
api = _src("Api")
|
|
for name in (
|
|
"줄비교?: SangeunCompare | null",
|
|
"엑셀: number | null",
|
|
"기초: number | null",
|
|
"못옮김: SangeunLost[]",
|
|
):
|
|
assert name in api
|
|
assert 'CompareLook = "같음" | "품다름" | "엑셀만" | "기초만"' in api
|
|
|
|
|
|
def test_부품_상자만_날_요소_없음_700줄_안():
|
|
src = _src("Compare")
|
|
assert not re.search(r'createElement\("(button|input)"|<button|<input', src)
|
|
for name in ("Compare", "WizardSk", "Lost", "Left"):
|
|
assert len(_src(name).splitlines()) <= 700
|