// ellipsis 地图标签契约自测(批次 3 第四轮:与 DOM 侧同语义) import { ellipsisForMapLabel, ELLIPSIS_MARK } from '../../../src/modules/cockpit/domain/ellipsis.js' let pass = 0 let fail = 0 const eq = (a, e, l) => { if (JSON.stringify(a) === JSON.stringify(e)) { pass++; console.log(` ✓ ${l}`) } else { fail++; console.log(` ✗ ${l} 期望 ${JSON.stringify(e)} 实际 ${JSON.stringify(a)}`) } } // 27px 本体 × 2.2 = 59.4px 限宽,12px 字号 const r1 = ellipsisForMapLabel('测试监测', 48, 12) eq(r1.truncated, false, '4 字(48px)在 48px 限宽内——不截') const r2 = ellipsisForMapLabel('测试污水排口监测点', 59.4, 12) eq(r2.truncated, true, '9 字超限 → 截断') eq(r2.shown.endsWith(ELLIPSIS_MARK), true, '省略号结尾') eq(r2.title, '测试污水排口监测点', 'title = 完整原文(hover 读全)') eq(ellipsisForMapLabel('', 59.4, 12).shown, '', '空文本回空串') eq(ellipsisForMapLabel('测试', 0, 12).truncated, false, '限宽 0 = 不截(留口子)') console.log(` ${pass} 过 / ${fail} 败`) if (fail) process.exitCode = 1