Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
# -*- 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 "")
|