Files
suaveplan/packages/media/audio/audio-analysis-loudness/tests/integration.test.ts
2026-05-27 23:47:53 +01:00

30 lines
1.1 KiB
TypeScript

import { describe, expect, it } from "@suaveplan/testing/runner";
import { LoudnessMeter } from "../src/index.js";
import { buildDoc, sine } from "./helpers/build-doc.js";
describe("LoudnessMeter integration", () => {
it("full round-trip on a 48 kHz stereo 5 s fixture", {
timeout: 60000,
}, async () => {
const sr = 48000;
const left = sine(0.5, 1000, sr, 5);
const right = sine(0.5, 1000, sr, 5);
const doc = buildDoc([left, right], sr);
const result = await new LoudnessMeter().analyze(doc);
expect(result.op).toBe("loudness-meter");
expect(result.sampleRate).toBe(sr);
expect(result.dcOffset.length).toBe(2);
expect(result.truePeak).toBeGreaterThanOrEqual(result.peak - 1e-3);
});
it("44.1 kHz mono is handled with rate-adapted K-weighting", {
timeout: 30000,
}, async () => {
const sr = 44100;
const doc = buildDoc([sine(0.25, 1000, sr, 4)], sr);
const r = await new LoudnessMeter().analyze(doc);
expect(Number.isFinite(r.lufs)).toBe(true);
expect(Number.isFinite(r.truePeak)).toBe(true);
});
});