package provider import "testing" // TestResolveVoicePrecedence pins the documented precedence // --voice pin > config mapping > repo default > en default. func TestResolveVoicePrecedence(t *testing.T) { cases := []struct { name string provider string lang string override string cfg map[string]string want string }{ {"default edge de", "edge", "de", "", nil, "de-DE-KatjaNeural"}, {"default edge en", "edge", "en", "", nil, "en-US-AriaNeural"}, {"default elevenlabs de (neutral, not private)", "elevenlabs", "de", "", nil, "21m00Tcm4TlvDq8ikWAM"}, {"default openai en", "openai", "en", "", nil, "alloy"}, {"mapping beats default", "edge", "de", "", map[string]string{"de": "de-DE-ConradNeural"}, "de-DE-ConradNeural"}, {"pin beats mapping", "edge", "de", "Pinned", map[string]string{"de": "de-DE-ConradNeural"}, "Pinned"}, {"unknown language falls back to en default", "edge", "fr", "", nil, "en-US-AriaNeural"}, {"osbuiltin has no voice IDs", "osbuiltin", "de", "", nil, ""}, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { if got := resolveVoice(tc.provider, tc.lang, tc.override, tc.cfg); got != tc.want { t.Errorf("resolveVoice = %q, want %q", got, tc.want) } }) } }