diff --git a/M02_MasterTemplete/M02_Table_Fill.py b/M02_MasterTemplete/M02_Table_Fill.py index 4d41ea46b..b0d13902e 100644 --- a/M02_MasterTemplete/M02_Table_Fill.py +++ b/M02_MasterTemplete/M02_Table_Fill.py @@ -194,11 +194,11 @@ def _label(key: str, value: Any) -> str: def _length(item: dict[str, Any]) -> float | None: - stated = _number(item["options"].get("length_m")) - if stated: - return stated + # 구간형은 시작~종료가 먼저(노면공 87-2) — 옛 length_m 은 범위를 고쳐도 안 따라옴 start, end = _number(item.get("start_m")), _number(item.get("end_m")) - return abs(end - start) if start is not None and end is not None else None + if start is not None and end is not None: + return abs(end - start) + return _number(item["options"].get("length_m")) or None def _source_value(source: dict[str, Any], item: dict[str, Any]) -> float | None: diff --git a/resources/tester/test_m02_table_fill.py b/resources/tester/test_m02_table_fill.py index df9aab5ae..e2ec9e675 100644 --- a/resources/tester/test_m02_table_fill.py +++ b/resources/tester/test_m02_table_fill.py @@ -216,3 +216,11 @@ def test_측점이_없어진_손_값은_맨_아래_비고_줄로(project: Path) assert last["값"] == {"sta": "NO.27+15", "h_intake": 1, "memo": "설계에서 측점 없어짐"} kept = fill.strip_design(doc) assert kept["줄"][-1]["값"]["h_intake"] == 1 # 다음 저장에도 남음 + + +def test_집계_길이는_구간형이면_시작_종료가_먼저(project: Path) -> None: + # 노면공 87-2 — 범위를 고쳐도 옛 length_m 이 안 앞섬 + moved = {"start_m": 200, "end_m": 245, "options": {"length_m": 30}} + assert fill._length(moved) == 45 + assert fill._length({"options": {"length_m": 12}}) == 12 # 점형 · 구간 없음 = 입력 길이 + assert fill._length({"options": {}}) is None