Files
Aislo/resources/tester/test_152_2_link_height.py
T
eomsangdonandClaude Opus 5.5 f8a13e234d feat(b06): 연동 흙막이 높이 = 본 흙막이 그린 높이 · 풀린 카드 「이 측점 높이」 줄(152-2)
- 소유 측점 적용값의 빈 높이 = 그린 순수 높이 — 옆 카드 · B07 · 서버 면적 · 연동 풂 굳힘이 같은 값(박스 옆 측점 0.5 → 2.0 m)
- 연동 푼 카드의 유입 · 유출 흙막이 = 좌측 칸에 「이 측점 높이」 ±0.1 줄(날개벽 칸 포함)
- 새 시험 test_152_2_link_height · 받는 줄 문자열 시험 셋 고침

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F3mdb91125mPoC6tpsQx4P
2026-10-09 19:09:04 +09:00

56 lines
2.3 KiB
Python

"""152-2 연동 흙막이 높이 — 본 흙막이가 그린 순수 높이를 옆 카드가 물려받음 · 풀면 그 측점만 따로.
화면 TS 를 그 자리에서 돌린 값(`helper_152_2_link_height.cjs`) · 픽스처 = 73-4(박스 352.14 · 높이 칸 비움).
"""
import json
import subprocess
from pathlib import Path
import pytest
ROOT = Path(__file__).resolve().parents[2]
HELPER = Path(__file__).parent / "helper_152_2_link_height.cjs"
NODE_MODULES = ROOT / "config" / "node_modules"
pytestmark = pytest.mark.skipif(not NODE_MODULES.is_dir(), reason="프론트엔드 의존성 미설치")
@pytest.fixture(scope="module")
def screen() -> dict:
done = subprocess.run( # noqa: S603 — 고정 실행 파일
["node", str(HELPER)], cwd=str(ROOT), capture_output=True, text=True, encoding="utf-8"
)
assert done.returncode == 0, done.stderr
return json.loads(done.stdout)
def _src(relative: str) -> str:
return (ROOT / relative).read_text(encoding="utf-8")
def test_연동_옆_카드_높이_본_흙막이와_같음(screen: dict) -> None:
owner = screen["owner"]["pure"]
assert owner == {"inlet": 2.0, "outlet": 2.0} # 본체 끝 높이(근입 0.5 아님)
for chainage in ("340", "360"):
assert screen["linked"][chainage]["pure"] == owner
assert screen["linked"][chainage]["walls"] == screen["owner"]["walls"]
def test_연동_풀린_카드만_따로(screen: dict) -> None:
detached = screen["detached"]
assert detached["340"]["pure"] == {"inlet": 2.0, "outlet": 2.1}
assert detached["360"]["pure"] == {"inlet": 2.0, "outlet": 2.0}
assert detached["owner"]["pure"] == {"inlet": 2.0, "outlet": 2.0}
def test_풀린_카드_이_측점_높이_줄() -> None:
panel = _src("B06_Section/B06_Section_UI_Cross_Structure_Panel.ts")
assert "deps.linkState()?.linked === false && guardKey && !isBasin" in panel
assert '"이 측점 높이"' in panel
dock = _src("B06_Section/B06_Section_UI_Adjust_Dock.ts")
assert 'const OWN_HEIGHT_ROW = ".b06-structure-panel__struct--own-height";' in dock
assert "return OWN_HEIGHT_ROW;" in dock # 세월교 · 박스 날개벽 칸도 받음
wire = _src("B06_Section/B06_Section_UI_Cross_Culvert_Wire.ts")
assert "h: shift.inlet.h ?? heights.inlet" in wire