Files
Aislo/resources/tester/test_structure_length_spans.py
T
eomsangdonandClaude Opus 5 0ef32b5279 chore(tester): 시험을 resources/tester/ 로 옮김 — 창끼리 건너가게
⚠ **뿌리** — `tmp/` 는 창 사이에 안 건너감(실측 확인: 상대 창이 놓은 `tmp/_sync_probe.txt`
가 시간을 두고 두 번 봐도 안 보임). 그래서 **정본(등록부 스키마)만 건너가고 그것을 읽는
시험은 안 건너가** 오늘 두 번, 같은 시험이 **연 창은 통과·받은 창은 실패**가 됐음.

- `tmp/tests/*` 를 `resources/tester/` 로 **복사**(127 파일). 내용은 **한 줄도 안 고침**
- `tmp/tests` 는 **남겨 둠** — 되돌릴 자리(사용자 지시)
- 실행: `./venv/Scripts/python.exe -m pytest resources/tester/ -q`
  옮기기 전과 **같은 수**: 617 통과 / 22 건너뜀 / 실패 0

⇒ 이제 시험·예외·까닭이 **정본과 함께** 움직임. 오늘 세운 「예외는 정본 스키마에」와 짝임.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 17:12:30 +09:00

52 lines
2.0 KiB
Python

"""구조물 연장에 **구간 목록**을 함께 낸다 — 2026-09-08 B08 창 요청.
왜 — 연장(m)만 내면 산출근거에 **「어디부터 어디까지」**를 못 적는다. 실무 내역은 「산마루측구
40m」 한 줄이라 없어도 서지만, 있으면 검산이 쉬워진다.
⚠ 겹침은 **합쳐서** 낸다. 데스크탑 실측 사례 — 산마루측구 둘(80~120 · 100~140)이 **60.0m**
로 합쳐져 내역서에 갔다(단순 합 80.0m). 구조물별로 셌으면 **20m 를 더 셀** 자리였다.
"""
import sys
from pathlib import Path
PROJECT_ROOT = Path(__file__).resolve().parents[2]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from common_util.common_util_structure_lengths import _merge # noqa: E402
def test_안_겹치면_그대로():
merged = _merge([(35.0, 45.0), (55.0, 65.0)])
assert merged == [(35.0, 45.0), (55.0, 65.0)]
assert sum(end - start for start, end in merged) == 20.0
def test_겹치면_합친다():
"""데스크탑 실측 그대로 — 80~120 과 100~140 은 80~140 한 구간(60m)이다."""
merged = _merge([(80.0, 120.0), (100.0, 140.0)])
assert merged == [(80.0, 140.0)]
assert sum(end - start for start, end in merged) == 60.0
def test_맞닿으면_한_구간():
"""끝점이 같은 두 구간(40~50 · 50~60)은 끊긴 것이 아니다."""
assert _merge([(40.0, 50.0), (50.0, 60.0)]) == [(40.0, 60.0)]
def test_품은_구간은_사라진다():
"""작은 구간이 큰 구간 안에 통째로 들면 큰 것 하나만 남는다."""
assert _merge([(10.0, 100.0), (30.0, 40.0)]) == [(10.0, 100.0)]
def test_행에_구간_목록이_실린다():
"""길이는 그 목록의 합과 **같아야** 한다 — 갈리면 산출근거와 수량이 어긋난다."""
import inspect
from common_util import common_util_structure_lengths as module
source = inspect.getsource(module.structure_lengths)
assert '"spans": [' in source
assert '"length_m": round(sum(end - start for start, end in merged), 2)' in source