mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-17 20:21:13 +00:00
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
DEFAULT_POLLY_VOICE,
|
|
escapeXml,
|
|
getOpenAiVoiceNames,
|
|
isOpenAiVoice,
|
|
mapVoiceToPolly,
|
|
} from "./voice-mapping.js";
|
|
|
|
describe("voice mapping", () => {
|
|
it("escapes xml-special characters", () => {
|
|
expect(escapeXml(`5 < 6 & "quote" 'apostrophe' > 4`)).toBe(
|
|
"5 < 6 & "quote" 'apostrophe' > 4",
|
|
);
|
|
});
|
|
|
|
it("maps openai voices, passes through provider voices, and falls back to default", () => {
|
|
expect(mapVoiceToPolly("alloy")).toBe("Polly.Joanna");
|
|
expect(mapVoiceToPolly("ECHO")).toBe("Polly.Matthew");
|
|
expect(mapVoiceToPolly("Polly.Brian")).toBe("Polly.Brian");
|
|
expect(mapVoiceToPolly("Google.en-US-Standard-C")).toBe("Google.en-US-Standard-C");
|
|
expect(mapVoiceToPolly("unknown")).toBe(DEFAULT_POLLY_VOICE);
|
|
expect(mapVoiceToPolly(undefined)).toBe(DEFAULT_POLLY_VOICE);
|
|
});
|
|
|
|
it("detects known openai voices and lists them", () => {
|
|
expect(isOpenAiVoice("nova")).toBe(true);
|
|
expect(isOpenAiVoice("NOVA")).toBe(true);
|
|
expect(isOpenAiVoice("Polly.Joanna")).toBe(false);
|
|
expect(getOpenAiVoiceNames()).toEqual(
|
|
expect.arrayContaining(["alloy", "echo", "fable", "nova", "onyx", "shimmer"]),
|
|
);
|
|
});
|
|
});
|