import { CodecRegistry } from "@suaveplan/audio-codecs/registry/registry"; import { describe, expect, it } from "@suaveplan/testing/runner"; import { FfmpegWasmCodec, register } from "../src/index.js"; import { buildPcmBytes, FakeWorker, successScript, } from "./fixtures/fake-worker.js"; describe("integration: codec wired through CodecRegistry", () => { it("register installs and registry.detect finds the codec", { timeout: 30000, }, () => { const registry = new CodecRegistry(); const codec = register(registry, { coreLoader: () => Promise.resolve({}), workerFactory: () => new FakeWorker() as unknown as Worker, }); expect(codec).toBeInstanceOf(FfmpegWasmCodec); const wav = new Uint8Array(44); wav[0] = 0x52; wav[1] = 0x49; wav[2] = 0x46; wav[3] = 0x46; expect(registry.detect(wav)).toBe("ffmpeg-wasm"); }); it("registry.decode produces an AudioDocument", { timeout: 30000, }, async () => { const registry = new CodecRegistry(); const worker = new FakeWorker(); worker.script.push(...successScript(buildPcmBytes(64, 2))); register(registry, { coreLoader: () => Promise.resolve({}), workerFactory: () => worker as unknown as Worker, }); const wav = new Uint8Array(44); wav[0] = 0x52; wav[1] = 0x49; wav[2] = 0x46; wav[3] = 0x46; const doc = await registry.decode(wav); expect(doc.channels).toBe(2); expect(doc.sampleRate).toBeGreaterThan(0); }); });