Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F3mdb91125mPoC6tpsQx4P
49 lines
1.9 KiB
Python
49 lines
1.9 KiB
Python
"""173-6 횡단 보기 반폭 [적용] — 요청값만으로 샘플 폭을 잼(교차점 맞춤 폭 안 씀).
|
|
|
|
원지반 못 만나는 측점이 있으면 누를 때마다 서버 재생성하던 옛 줄(`maxToeFitHalfWidth`)을 지움 →
|
|
보유 샘플(20 m) 넘는 값일 때만 재생성 · 나머지는 카드 다시 그리기만.
|
|
소스(`design_view_cross.ts` · `B06_Section_UI_Cross_Fit.ts`) + `createSampleWidener` 를 돌린 값
|
|
(`helper_173_6_half_width.cjs`).
|
|
"""
|
|
|
|
import json
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
HERE = Path(__file__).parent
|
|
ROOT = HERE.parents[1]
|
|
DVC = (ROOT / "A00_Common" / "design" / "design_view_cross.ts").read_text(encoding="utf-8")
|
|
FIT = (ROOT / "B06_Section" / "B06_Section_UI_Cross_Fit.ts").read_text(encoding="utf-8")
|
|
|
|
|
|
def _apply_body() -> str:
|
|
at = DVC.index("async function applyCrossHalfWidth")
|
|
return DVC[at : DVC.index("\n }\n", at)]
|
|
|
|
|
|
def test_적용은_요청값만_넘김() -> None:
|
|
body = _apply_body()
|
|
assert "ensureSampledWidth(requested)" in body
|
|
assert "maxToeFitHalfWidth" not in DVC and "Math.max" not in body
|
|
|
|
|
|
def test_교차점_맞춤_폭_함수_지움() -> None:
|
|
assert "maxToeFitHalfWidth" not in FIT and "toeFitHalfWidth" not in FIT
|
|
|
|
|
|
@pytest.mark.skipif(not (ROOT / "config" / "node_modules").is_dir(), reason="의존성 미설치")
|
|
def test_보유_폭_안은_재생성_없음_넘을_때만_한_번() -> None:
|
|
done = subprocess.run( # noqa: S603 — 고정 실행 파일
|
|
["node", str(HERE / "helper_173_6_half_width.cjs")],
|
|
capture_output=True,
|
|
text=True,
|
|
encoding="utf-8",
|
|
)
|
|
assert done.returncode == 0, done.stderr
|
|
out = json.loads(done.stdout)
|
|
assert out["within"] == [True, True, True] and out["withinCalls"] == 0
|
|
assert out["over"] is True and out["overCalls"] == [25]
|
|
assert out["again"] is True and out["againCalls"] == 1
|