Files
2026-05-27 23:47:53 +01:00

48 lines
1.6 KiB
TypeScript

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