26 lines
1.2 KiB
JavaScript
26 lines
1.2 KiB
JavaScript
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 })
|
|
})
|