- 공식 줄 만약(IF) 식 = 지금 옵션 · 중간값으로 탄 갈래만(decide) · 만약이 낳은 0 · 1 접음 · 「a - -x」 → 「a + x」 · 셈은 그대로(판정 = 계산기 값) - 바로 아래 근거 한 줄 — 옵션 비교 「지붕슬래브 「아님」 → 0」 · 수치 비교 「H = 9 > 7 → …」 · 규칙 보기 단추 없음(M01 도) - 오른쪽 산출근거 = 같은 decide 한 벌(tex 의 만약 · 0 · 1 규칙을 걷고 decide 부름) - 결정된 식을 고치면 그 글로 굳음(만약 사라짐 · 옵션 바꿔도 안 따라감) · 저장본에 만약이 있던 줄 = 「옵션 규칙이 풀렸음 · 되돌리려면 [되돌림]」 표지 · M01 · M02 같은 부품 - 1,518 전수 — 만약 든 388 문서 663 줄 · 결정된 식 값 = 원 식 = 셈 답 · 남은 만약 0 · 근거 1,062 - test_804_12 둘 · helper 「결정」 할일 · test_804_7 머리 단추 기대를 804-11 deleteButton 으로 고침(낡은 기대) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
45 lines
2.6 KiB
Python
45 lines
2.6 KiB
Python
"""804-12(요구 695 · 696) — 왼쪽 공식 줄 만약(IF) 식 = 결정된 식 + 근거 한 줄 · 오른쪽 산출근거와 같은 `decide` 한 벌.
|
|
|
|
① 1,518 전수 — 만약 든 식 줄마다 결정된 식 값 = 원 식 값 = 셈 답 · 조건을 아는 줄은 만약이 안 남음 · 근거 = 탄 만약 수
|
|
② 접기 규칙 — 만약이 낳은 수만 접음(-0 · 0 ÷ 100 · 1 - 0) · 「a - -x」 → 「a + x」 · 만약 없는 조각 그대로
|
|
③ 화면 — 결정된 식을 고치면 그 글로 굳음(만약 사라짐) · 저장본에 만약이 있던 줄 = 「옵션 규칙이 풀렸음」 표지 · 규칙 보기 단추 없음
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from resources.tester.test_804_2_line_stack import _ts, world # noqa: F401 — 같은 셈 바탕
|
|
|
|
ROOT = Path(__file__).resolve().parents[2]
|
|
|
|
|
|
def test_결정된_식_전수_셈_같음(world) -> None: # noqa: F811
|
|
keys = sorted(world["cases"])
|
|
got = dict(zip(keys, _ts("결정", [world["cases"][k] for k in keys])))
|
|
lines = [(k, x) for k, xs in got.items() for x in xs]
|
|
assert len({k for k, _ in lines}) > 350 and len(lines) > 600 # 388 문서 · 663 줄 언저리
|
|
bad = [(k, x["기호"]) for k, x in lines if not (x["같음"] and x["답"])]
|
|
assert not bad, bad[:10]
|
|
left = [(k, x["기호"], x["글"]) for k, x in lines if x["남은만약"]]
|
|
assert len(left) < len(lines) * 0.05, left[:10] # 조건을 모르는 줄만(빈 값 등)
|
|
assert sum(x["근거"] for _, x in lines) >= len(lines) - len(left)
|
|
gc = {x["기호"]: x["글"] for x in got["GC001009"]}
|
|
assert (
|
|
gc["Q_시공"] == "Q_시공^표" and gc["Q_그물막인부"] == "0"
|
|
) # 기본 옵션 = 감률 0 · 할증 없음
|
|
assert "만약" not in "".join(x["글"] for x in got["GC000211"])
|
|
|
|
|
|
def test_화면_결정된_식_근거_굳음_표지() -> None:
|
|
rows = (ROOT / "A00_Common/line_stack_rows.ts").read_text(encoding="utf-8")
|
|
assert "const expr = iffy ? textOf(decide(tree!, vals)) : raw;" in rows
|
|
assert 'createText(lt("If_Freed"), "warning")' in rows
|
|
tex = (ROOT / "A00_Common/line_stack_tex.ts").read_text(encoding="utf-8")
|
|
assert "return tex(decide(n, c.vals), { ...c, decided: true });" in tex # 오른쪽 = 같은 decide
|
|
assert "takenOf" not in tex and "leafNum" not in tex
|
|
for rel in ("A00_Common/line_stack_text.ts", "A00_Common/line_stack_rows.ts"):
|
|
assert "규칙 보기" not in (ROOT / rel).read_text(encoding="utf-8")
|
|
screen = (ROOT / "A00_Common/line_stack_screen.ts").read_text(encoding="utf-8")
|
|
assert "before: saved ? lineMap(JSON.parse(saved) as StackDoc) : undefined," in screen
|