32 lines
1.2 KiB
Go
32 lines
1.2 KiB
Go
package provider
|
|||
|
|
|
||
|
|
import "testing"
|
||
|
|
|
||
|
|
// TestResolveVoiceRangfolge pinnt die dokumentierte Rangfolge
|
||
|
|
// --voice-Pin > config-Mapping > Repo-Default > en-Default.
|
||
|
|
func TestResolveVoiceRangfolge(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, nicht privat)", "elevenlabs", "de", "", nil, "21m00Tcm4TlvDq8ikWAM"},
|
||
|
|
{"Default openai en", "openai", "en", "", nil, "alloy"},
|
||
|
|
{"Mapping schlägt Default", "edge", "de", "", map[string]string{"de": "de-DE-ConradNeural"}, "de-DE-ConradNeural"},
|
||
|
|
{"Pin schlägt Mapping", "edge", "de", "Gepinnt", map[string]string{"de": "de-DE-ConradNeural"}, "Gepinnt"},
|
||
|
|
{"unbekannte Sprache → en-Default", "edge", "fr", "", nil, "en-US-AriaNeural"},
|
||
|
|
{"osbuiltin kennt keine 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)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|