import test from 'node:test'; import assert from 'node:assert/strict'; import { announcementMotion } from '../../YouleNexus/assets/framework/presentation/lobby-model.ts'; test('announcement follows source byte width, speed, right entry and looping left exit',()=>{ const initial=announcementMotion('公告ABC',645,0); assert.equal(initial.textWidth,105); // gblen=7, Game_Config.Notice.width=15 assert.equal(initial.duration,7.5); // source speed=0.1 px/ms assert.equal(initial.left,645); assert.equal(announcementMotion('公告ABC',645,1).left,545); assert.ok(announcementMotion('公告ABC',645,7.49).left < -103); assert.equal(announcementMotion('公告ABC',645,7.5).left,645); assert.equal(announcementMotion('公告ABC',645,15).left,645); assert.equal(announcementMotion('',645,0).visible,false); assert.equal(announcementMotion(' ',645,0).visible,true); assert.throws(()=>announcementMotion('公告',0,0),/width/); });