import { test } from 'node:test' import assert from 'node:assert/strict' import './test-support.mjs' const { RenderCadence } = await import('../src/renderCadence.ts') test('settled scenes stop drawing and input or async completion wakes a frame', () => { const cadence = new RenderCadence() assert.deepEqual(cadence.nextFrame(0, false), { intervalMs: undefined }) for (let time = 16; time <= 1600; time += 16) assert.equal(cadence.nextFrame(time, false), null) cadence.invalidate() assert.deepEqual(cadence.nextFrame(1616, false), { intervalMs: undefined }) assert.equal(cadence.nextFrame(1632, false), null) }) test('continuous motion samples frame intervals, excluding idle and visibility gaps', () => { const cadence = new RenderCadence() cadence.nextFrame(0, true) assert.deepEqual(cadence.nextFrame(50, true), { intervalMs: 50 }) assert.deepEqual(cadence.nextFrame(133, true), { intervalMs: 83 }) assert.equal(cadence.nextFrame(150, false), null) assert.deepEqual(cadence.nextFrame(5000, true), { intervalMs: undefined }) assert.deepEqual(cadence.nextFrame(5016, true), { intervalMs: 16 }) cadence.resetSampling() assert.deepEqual(cadence.nextFrame(9000, true), { intervalMs: undefined }) })