Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MgChuAcyBqUkhHMTXomQC7
60 lines
3.0 KiB
Python
60 lines
3.0 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""128 — 구조물 조합 다이어그램 아이콘 단추 · 면적산출 아래 막대 도면 칩(✓ / ✗) · 알약 글 세로 가운데(원문 · CSS 단언)."""
|
||
|
||
import os
|
||
import re
|
||
|
||
HERE = os.path.dirname(os.path.abspath(__file__))
|
||
ROOT = os.path.join(HERE, "..", "..")
|
||
|
||
|
||
def _read(*parts: str) -> str:
|
||
with open(os.path.join(ROOT, *parts), encoding="utf-8") as f:
|
||
return f.read()
|
||
|
||
|
||
def _block(css: str, selector: str) -> str:
|
||
return css.split(f"\n{selector} {{", 1)[1].split("}", 1)[0]
|
||
|
||
|
||
def test_다이어그램_작게_크게_한눈에_아이콘_단추_128_1():
|
||
src = _read("M02_MasterTemplete", "M02_MasterTemplete_Labor_Diagram.ts")
|
||
# 공용 단추 + 기호 · 글은 title · aria-label
|
||
assert 'createButton({ label: glyph, variant: "ghost", size: "sm", onClick })' in src
|
||
assert "b.title = td(key);" in src and 'b.setAttribute("aria-label", td(key));' in src
|
||
assert 'icon("−", "Zoom_Out"' in src
|
||
assert 'icon("+", "Zoom_In"' in src
|
||
assert 'icon("⤢", "Fit"' in src
|
||
# 글 단추로 남은 것 없음
|
||
assert 'label: td("Zoom_' not in src and 'label: td("Fit")' not in src
|
||
css = _read("M02_MasterTemplete", "M02_MasterTemplete_Labor_Diagram.css")
|
||
assert "min-width" in _block(css, ".m02-labordg__icon")
|
||
|
||
|
||
def test_도면_칩_라운드_사각_값_맞음_다름_기호_128_2():
|
||
src = _read("M02_MasterTemplete", "M02_MasterTemplete_AreaToDrawing.ts")
|
||
assert 'same: "✓"' in src and 'diff: "✗"' in src
|
||
# 뜻은 마우스 올림 글(설명 → 꼬리표 title)
|
||
assert re.search(r'sameTip: "값 맞음 — ', src) and re.search(r'diffTip: "값 다름 — ', src)
|
||
assert 'noTable: "도면에 표 없음"' in src and 'gone: "범위 없음"' in src # 막힘은 글 그대로
|
||
rng = _read("A00_Common", "spreadsheet", "spreadsheet_link_range.ts")
|
||
assert "if (tag && state?.설명) tag.title = state.설명;" in rng
|
||
css = _read("A00_Common", "spreadsheet", "spreadsheet_links.css")
|
||
chip = _block(css, ".ss-link--range")
|
||
assert "border-radius: calc(var(--radius-buttons) / 2)" in chip # 알약(999px)과 다른 모양
|
||
assert "999px" in _block(css, ".ss-link") # 입력 알약은 그대로
|
||
assert "line-height: 16px" in _block(css, ".ss-link--range .ui-tag")
|
||
|
||
|
||
def test_알약_연결_모두_해제_글_세로_가운데_128_3():
|
||
css = _read("A00_Common", "spreadsheet", "spreadsheet_links.css")
|
||
pill = _block(css, ".ss-link")
|
||
assert "align-items: center" in pill and "baseline" not in pill
|
||
assert "min-height: 22px" in pill and "line-height: 16px" in pill
|
||
assert "box-sizing: border-box" in pill
|
||
# [연결 모두 해제] · [+ 자재 추가] 는 .ss-link 를 이어받음 — 따로 세로 맞춤을 덮지 않음
|
||
for sel in (".ss-link--clear", ".ss-link--add"):
|
||
assert "align-items" not in _block(css, sel) and "line-height" not in _block(css, sel)
|
||
links = _read("A00_Common", "spreadsheet", "spreadsheet_links.ts")
|
||
assert 'className: "ss-link ss-link--clear"' in links
|