38 lines
1,021 B
TypeScript
38 lines
1,021 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)
|
|
})
|
|
})
|