# -*- coding: utf-8 -*- """뒷길이 표준(품셈 13-4-4 [주]⑩) — 안 고른 돌쌓기의 뒷길이는 **표의 하한** (2026-09-14 브레인 판정 ㉮). 앞서 붙박이 45㎝ 로 섰음. 표는 높이 × 메/찰 로 범위를 줌 — 하한이 규격(25·30·35·45·55·60·75)에 없으면 **범위 안 그 위 첫 규격**(메쌓기 ~3m·~5m 하한 36 → 45). 경계값은 앞 칸(표준경사와 같음). """ from __future__ import annotations import sys from pathlib import Path import pytest ROOT = Path(__file__).resolve().parents[2] if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) from B08_Quantity.B08_Quantity_Engine_UnitQuantity_StoneSpec import ( # noqa: E402 _back_length, back_length_default_note, standard_back_length, ) # (높이, 메쌓기 제안, 찰쌓기 제안) — 원문 L7174~7177 CELLS = [ (1.0, 25, 25), (1.5, 25, 25), # 경계값은 앞 칸 (2.5, 45, 30), # 메 36~45 → 45 · 찰 30~35 → 30 (3.0, 45, 30), (4.0, 45, 35), # 메 36~60 → 45 · 찰 35~45 → 35 (6.0, 45, 35), # 메 45~75 · 찰 35~55 (7.5, 75, 45), # 메 75이상 · 찰 45~60 ] @pytest.mark.parametrize("height, dry, wet", CELLS) def test_표_하한(height: float, dry: int, wet: int) -> None: assert standard_back_length(wet=False, height_m=height)[0] == dry assert standard_back_length(wet=True, height_m=height)[0] == wet def test_하한이_규격에_없으면_그_위_첫_규격_사유() -> None: cm, basis = standard_back_length(wet=False, height_m=2.5) assert cm == 45 assert "36~45㎝" in basis and "하한 36㎝ 는 규격 일곱(원문 L7152)에 없어" in basis assert "원문 L7172~7181" in basis # 사용자가 되짚을 줄 번호(브레인 2026-09-14) def test_고른_값이_이긴다() -> None: assert _back_length({"back_len_cm": "55"}, wet=True, height_m=2.5) == 55 assert back_length_default_note({"back_len_cm": 55}, 55, wet=True, height_m=2.5) is None def test_메찰_높이를_모르는_자리는_종전_45() -> None: assert _back_length({}) == 45 assert "기본 45㎝" in (back_length_default_note({}, 45) or "")