TTS-Arena-V2 / packages /shared /src /models.test.ts
GitHub Actions
Deploy from github.com/TTS-AGI/TTS-Arena@f49eded
374bcb6
Raw
History Blame Contribute Delete
1.58 kB
import { describe, expect, test } from "bun:test";
import { PROMPTS, makeWaveform, randomPrompt, seededRandom } from "./models";
describe("seededRandom", () => {
test("deterministic per seed, varies across seeds", () => {
const a = seededRandom("x");
const b = seededRandom("x");
expect(a()).toBe(b());
expect(seededRandom("a")()).not.toBe(seededRandom("b")());
});
test("stays in [0, 1)", () => {
const r = seededRandom("range");
for (let i = 0; i < 1000; i++) {
const v = r();
expect(v).toBeGreaterThanOrEqual(0);
expect(v).toBeLessThan(1);
}
});
test("does not throw on undefined/empty seed", () => {
// @ts-expect-error intentional: assert resilience to undefined
expect(() => seededRandom(undefined)()).not.toThrow();
expect(() => seededRandom("")()).not.toThrow();
});
});
describe("makeWaveform", () => {
test("returns requested bars within [0.06, 1]", () => {
const w = makeWaveform("seed", 40);
expect(w).toHaveLength(40);
for (const a of w) {
expect(a).toBeGreaterThanOrEqual(0.06);
expect(a).toBeLessThanOrEqual(1);
}
});
test("is deterministic", () => {
expect(makeWaveform("same")).toEqual(makeWaveform("same"));
});
});
describe("prompts", () => {
test("are present and non-empty", () => {
expect(PROMPTS.length).toBeGreaterThan(0);
for (const p of PROMPTS) expect(p.trim().length).toBeGreaterThan(0);
});
test("randomPrompt returns a member of the pool", () => {
expect(PROMPTS).toContain(randomPrompt(() => 0.5));
});
});