opencode/packages/voice/test/audio-jitter-buffer.test.ts
2026-07-28 21:00:35 -04:00

33 lines
1.2 KiB
TypeScript

import { describe, expect, test } from "bun:test"
import { AudioJitterBuffer } from "../src/audio-jitter-buffer"
import { PCM_BYTES_PER_MS } from "../src/pcm"
const chunk = (durationMs: number, gapMs = 0) => ({ bytes: Buffer.alloc(durationMs * PCM_BYTES_PER_MS), gapMs })
describe("AudioJitterBuffer", () => {
test("holds startup audio until the target buffer is available", () => {
const buffer = new AudioJitterBuffer(300)
expect(buffer.push(chunk(100))).toEqual([])
expect(buffer.push(chunk(100))).toEqual([])
expect(buffer.push(chunk(100))).toHaveLength(3)
})
test("passes chunks through after playback starts", () => {
const buffer = new AudioJitterBuffer(200)
buffer.push(chunk(200))
expect(buffer.push(chunk(100))).toEqual([chunk(100)])
})
test("flushes short utterances and resets between responses", () => {
const buffer = new AudioJitterBuffer(300)
buffer.push(chunk(100))
expect(buffer.finish()).toHaveLength(1)
buffer.reset()
expect(buffer.push(chunk(100))).toEqual([])
})
test("counts intentional timeline silence toward buffered duration", () => {
const buffer = new AudioJitterBuffer(300)
expect(buffer.push(chunk(200, 100))).toHaveLength(1)
})
})