"""임목파쇄 — 켤 수 있는 칸 (2026-09-09 사용자 확정 5차 5번). 「근주이식·임목파쇄는 **기본 안 셈**」이되 「⚠ 현장에 따라 **파쇄가 적용될 필요 있음**」이라 **임목파쇄만** 켤 수 있게 둔다. **근주이식은 칸도 안 만든다.** ⚠ 겨누는 것 다섯 ① 기본은 **줄이 아예 없다** — 빈 칸이 「세야 함」으로 읽히면 안 된다 (부대시설과 다른 자리 — 그쪽은 **법정 의무**라 줄이 늘 선다) ② 켜면 줄이 선다 ③ ⚠ 켜도 **부피는 지어내지 않는다** — 넣어야 값이 선다 ④ 부피를 넣으면 값이 서고 코드가 붙는다(FP-08-11 이동식 임목 파쇄) ⑤ 근주이식은 **어느 경우에도 줄이 없다** """ from __future__ import annotations import sys from pathlib import Path ROOT = Path(__file__).resolve().parents[2] sys.path.insert(0, str(ROOT)) from B08_Quantity.B08_Quantity_Engine_Preparation import ( # noqa: E402 STATUS_NEEDS_INPUT, STATUS_READY, build_table, ) def 표(enabled: object = False, volume: object = None) -> dict: table = build_table({}, [], [], None, None, {}, None, None, enabled, volume) return {row["item"]: row for row in table["rows"]} def test_기본은_줄이_없다() -> None: """⚠ 켤 자리가 없으면 물을 일도 없다 — 안 켠 프로젝트에 빈 줄을 세우지 않는다.""" assert "임목파쇄" not in 표() def test_켜면_줄이_선다() -> None: assert "임목파쇄" in 표(True) def test_켜도_부피는_지어내지_않는다() -> None: row = 표(True)["임목파쇄"] # 부피를 넣으면 서는 줄 — 「입력이 필요함」(2026-09-14 ㉴). assert row["amount"] is None and row["status"] == STATUS_NEEDS_INPUT assert "부피" in row["reason"] def test_부피를_넣으면_값이_선다() -> None: row = 표(True, 78.0)["임목파쇄"] assert row["amount"] == 78.0 and row["status"] == STATUS_READY assert row["work_item_code"] == "FP-08-11" assert row["unit"] == "㎥" def test_근주이식은_어느_경우에도_없다() -> None: """확정 5차 5번 — 근주이식(FP-14-02)은 **칸도 안 만든다**.""" for enabled, volume in ((False, None), (True, None), (True, 78.0)): assert "근주이식" not in 표(enabled, volume)