# -*- coding: utf-8 -*- """PLAN 176-1 — B05 3D 성토 비탈 끝 깨짐(172 뒤) 고침 검사. 도우미(helper_176_1_seam.cjs) — 직선 80 m · 성토(0~40 m) → 절토(60~80 m) · 지반 사인 물결(진폭 1 m). 비탈 끝 바깥 SEAM_M(1.5 m) 안 지형 점 빼서 잇는 띠 완만 · 성토 덩이 끝 3 m 안 뜸 0 까지 줄임. """ import json import os import subprocess import pytest HERE = os.path.dirname(os.path.abspath(__file__)) @pytest.fixture(scope="module") def r(): proc = subprocess.run( ["node", os.path.join(HERE, "helper_176_1_seam.cjs")], capture_output=True, text=True, timeout=240, ) assert proc.returncode == 0, proc.stderr return json.loads(proc.stdout) def test_seam_band_gentle(r): # 성토 비탈 끝을 쓰는 원지반 삼각형 경사 p99 < 45°(1 mm 띠 = 54.7°) assert r["seam"] == 1.5 assert r["seamTris"] > 100, r assert r["seamP99"] < 45, r def test_run_end_lift_tapered(r): # 성토 덩이 가운데는 한도까지 뜸(물결이 실제로 재어짐) · 절토로 바뀌는 끝은 0 근처 assert r["midOff"] > 0.4, r assert r["endX"][0] > 45 and r["endX"][1] > 45, r assert r["endOff"] < 0.02, r def test_no_gap_no_failed_constraint(r): assert r["gaps"] == 0, r assert r["stats"]["failed"] == 0, r