"""독립 기슭막이 구간값(길이·전/후)이 B06 조정창 키에서 읽히는지 — 2026-08-28 리셋 버그. 조정창은 `{role}_revet_length_m` 등에 저장한다(SPAN_OPTION_KEYS). 백엔드가 전용 키 (`length_m`)만 읽던 동안 조정값이 매번 되돌아왔다. """ from B06_Section.B06_Section_Engine_Culvert import _revet_set def test_panel_span_keys_win(): """조정창이 쓴 유출 구간값이 스펙에 그대로 실린다.""" options = { "side": "양쪽", "tiers": 1, "form": "돌쌓기(메)", "length_m": 10, "height_m": 2.5, "before_m": 5, "after_m": 5, "outlet_revet_length_m": 10.5, "outlet_revet_before_m": 5.5, "outlet_revet_after_m": 5, } spec = _revet_set(options) assert spec["outlet"]["revet_length_m"] == 10.5 assert spec["outlet"]["revet_before_m"] == 5.5 assert spec["outlet"]["revet_after_m"] == 5 # 유입은 조정 전이라 폼 값(폴백)을 그대로 쓴다 — 배관과 같은 역할별 독립. assert spec["inlet"]["revet_length_m"] == 10 assert spec["inlet"]["revet_before_m"] == 5 # 형태·높이는 역할 키가 없으면 폼 한 벌을 공유한다. assert spec["outlet"]["revet_form"] == "돌쌓기(메)" assert spec["outlet"]["revet_height_m"] == 2.5 def test_legacy_only_options_still_read(): """옛 전용 키만 있는 저장분도 그대로 읽힌다(호환).""" spec = _revet_set({"form": "찰쌓기", "length_m": 8, "height_m": 2, "before_m": 3, "after_m": 5}) for role in ("inlet", "outlet"): assert spec[role]["revet_length_m"] == 8 assert spec[role]["revet_before_m"] == 3 assert spec[role]["revet_after_m"] == 5 assert spec[role]["revet_form"] == "찰쌓기" def test_role_keys_only(): """B05 폼이 새로 쓰는 역할 키 한 벌만 있어도 양쪽 벽이 선다.""" spec = _revet_set( { "side": "좌", "inlet_revet_form": "돌쌓기(메)", "inlet_revet_length_m": 12, "inlet_revet_height_m": 2.5, "inlet_revet_before_m": 6, "inlet_revet_after_m": 6, "outlet_revet_form": "돌쌓기(메)", "outlet_revet_length_m": 12, "outlet_revet_height_m": 2.5, "outlet_revet_before_m": 6, "outlet_revet_after_m": 6, } ) assert spec["side"] == "좌" assert spec["hidden_pipe"] is True for role in ("inlet", "outlet"): assert spec[role]["revet_length_m"] == 12 assert spec[role]["revet_height_m"] == 2.5