check-ellipsis-map.mjs 1.1 KB

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