- 소유 측점 적용값의 빈 높이 = 그린 순수 높이 — 옆 카드 · 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
56 lines
2.3 KiB
Python
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
|