23 lines
1.2 KiB
TypeScript
23 lines
1.2 KiB
TypeScript
import { describe, expect, test } from "bun:test";
|
||
import { ALIEN_EXCERPTS, buildMeetingFixture } from "./meetingFixture";
|
||
|
||
describe("buildMeetingFixture (SYNTHETIC meeting stand-in)", () => {
|
||
test("joins en_aiproblem and the en_alien excerpts with pauses, deterministically", async () => {
|
||
const first = await buildMeetingFixture();
|
||
const second = await buildMeetingFixture();
|
||
const seconds = first.audio.length / 16_000;
|
||
const excerptSeconds = ALIEN_EXCERPTS.reduce((n, e) => n + e.end - e.start, 0);
|
||
// lead-in 2 + aiproblem ≈ 14.4 + excerpts + pauses 3+8+2+5
|
||
expect(seconds).toBeCloseTo(2 + 14.4 + excerptSeconds + 18, 0);
|
||
expect(first.audio).toEqual(second.audio);
|
||
expect(first.reference).toBe(second.reference);
|
||
expect(first.reference).toStartWith("The problem I find with AI");
|
||
expect(first.reference).toContain("Voices of the Void");
|
||
expect(first.reference).toEndWith("Maybe no.");
|
||
// Pauses are room tone, not digital silence, and never louder than −50 dBFS.
|
||
const leadIn = first.audio.subarray(0, 2 * 16_000);
|
||
expect(leadIn.some((v) => v !== 0)).toBe(true);
|
||
expect(Math.max(...leadIn.map(Math.abs))).toBeLessThan(0.003);
|
||
}, 60_000); // decodes the 15-min en_alien twice
|
||
});
|