Files
Sanctification/card-harness/scripts/render-cadence.test.mjs

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 })
})