"""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