openpencil/tests/engine/profiler/frame-stats.test.ts
2026-05-18 18:58:30 +03:00

39 lines
1,022 B
TypeScript

import { describe, it, expect } from 'bun:test'
import { FrameStats } from '@open-pencil/core'
describe('FrameStats', () => {
it('records frames and computes rolling averages', () => {
const stats = new FrameStats()
for (let i = 0; i < 10; i++) {
stats.recordFrame(5)
}
expect(stats.avgCpuTime).toBe(5)
expect(stats.smoothedFps).toBeGreaterThan(0)
expect(stats.getFrameTimeHistory()).toBeInstanceOf(Float64Array)
expect(stats.getBufferCount()).toBe(10)
})
it('tracks external fields', () => {
const stats = new FrameStats()
stats.totalNodes = 100
stats.culledNodes = 20
stats.drawCalls = 50
stats.scenePictureCacheHit = true
expect(stats.totalNodes).toBe(100)
expect(stats.culledNodes).toBe(20)
expect(stats.drawCalls).toBe(50)
expect(stats.scenePictureCacheHit).toBe(true)
})
it('handles GPU time as Number.NaN initially', () => {
const stats = new FrameStats()
stats.recordFrame(1)
expect(stats.gpuTime).toBe(0)
})
})