Files
Aislo/resources/tester/test_b05_routeedit_pick.py
T
eomsangdonandClaude Sonnet 5.5 90194b2849 feat(B05): 계획노선 편집 창 — 측점 라벨 · 호 고르기 판정 함수(22-2 · 22-3 1차)
- 측점 라벨 글자 상자를 그릴 때 기록(drawStationTicks 의 onLabel · B04 지도 · 배수유역도 동작 그대로)
- stationAtScreen 이 눈금 다음 라벨 상자를 봄 · 솎여 안 보이는 눈금은 안 잡음
- 곡선 호 점열(curveArcVertices)과 점-호 판정(arcAtScreen) 더함
- 시험 resources/tester/test_b05_routeedit_pick.py 8건
- RouteEdit.ts 배선은 sub6 나누기 뒤 새 파일에 잇는 다음 커밋

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EauA2ATmqNRbeV48s9CcBr
2026-09-29 19:32:57 +09:00

72 lines
2.2 KiB
Python

# -*- coding: utf-8 -*-
"""계획노선 편집 창 — **측점 라벨 고르기**(계획서 22-2) · **호 고르기**(22-3) 회귀검증.
Node 헬퍼(`helper_b05_routeedit_pick.cjs`)가 TS 를 트랜스파일해 돌리고, 여기서 값을 판정한다.
"""
import json
import os
import subprocess
import pytest
HERE = os.path.dirname(os.path.abspath(__file__))
@pytest.fixture(scope="module")
def results():
proc = subprocess.run(
["node", os.path.join(HERE, "helper_b05_routeedit_pick.cjs")],
capture_output=True,
text=True,
timeout=60,
)
assert proc.returncode == 0, proc.stderr
return json.loads(proc.stdout)
def test_호_점열은_그려지는_선의_시작_끝_조각과_같다(results):
assert results["arcMatchesDrawn"] is True
def test_호를_누르면_그_곡선_노드_번호(results):
pick = results["pick"]
assert pick["onArc"] == results["node"]
assert pick["nearArc"] == results["node"]
assert results["pick2"] == results["node"] # 반대로 도는 곡선도
def test_곧은_선_빈_곳_곡선_없음은_안_고름(results):
pick = results["pick"]
assert pick["farFromArc"] == -1
assert pick["onStraight"] == -1
assert pick["empty"] == -1
assert pick["noCurves"] == -1
def test_라벨_상자는_실제로_그린_사각형과_같다(results):
assert results["labelsMatchRects"] is True
assert results["label"]["chainages"] == [0, 40, 80]
def test_라벨_글자를_누르면_그_측점(results):
label = results["label"]
assert label["onLabel"] == 40
assert label["insideCorner"] == 40 # 돌린 상자 모서리 안쪽
assert label["outsideCorner"] is None # 모서리 바깥
def test_눈금이_라벨보다_먼저(results):
assert results["label"]["tickBeatsLabel"] == 40
def test_솎여_안_보이는_눈금은_안_잡힘(results):
assert results["label"]["hiddenTick"] is None
assert results["label"]["hiddenTickNoInfo"] == 20 # 라벨 정보가 없으면 예전처럼 전부
def test_라벨이_없거나_빈_곳은_안_고름(results):
label = results["label"]
assert label["emptyNoLabels"] is None
assert label["emptyElsewhere"] is None