# -*- 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