You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.5 KiB
82 lines
2.5 KiB
package console
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"yunyan/comm"
|
|
)
|
|
|
|
// Azure TTS 模板只该留「凭据两件套 + 语言两项」:音色/语速/音调配在服务上会跟 agent 的音色选择打架。
|
|
func TestAzureTTSTemplateFields(t *testing.T) {
|
|
var azure *ThirdSvcTemplate
|
|
for _, x := range builtinSvcTemplates() {
|
|
if x.Id == "tts_azure" {
|
|
tmp := x
|
|
azure = &tmp
|
|
break
|
|
}
|
|
}
|
|
if azure == nil {
|
|
t.Fatal("内置模板里找不到 tts_azure")
|
|
}
|
|
keys := make([]string, 0, len(azure.Fields))
|
|
for _, f := range azure.Fields {
|
|
keys = append(keys, f.Key)
|
|
}
|
|
got := strings.Join(keys, ",")
|
|
want := "languages,default_lang,subscription_key,region"
|
|
if got != want {
|
|
t.Fatalf("tts_azure 字段 = %s,期望 %s", got, want)
|
|
}
|
|
}
|
|
|
|
// languages 预填值必须来自音色表:有音色才说得出那门语言,两处口径不能各写各的。
|
|
func TestTTSTemplateLanguagesPrefilled(t *testing.T) {
|
|
want := strings.Join(comm.TTSLanguages(comm.TTSProviderAzure), ",")
|
|
if want == "" {
|
|
t.Fatal("音色表里 azure 没有语言,检查 comm/ttsvoice.go")
|
|
}
|
|
for _, x := range builtinSvcTemplates() {
|
|
if x.Id != "tts_azure" {
|
|
continue
|
|
}
|
|
for _, f := range x.Fields {
|
|
if f.Key != "languages" {
|
|
continue
|
|
}
|
|
if f.DefValue != want {
|
|
t.Fatalf("tts_azure 的 languages 预填 = %q,期望与音色表一致 %q", f.DefValue, want)
|
|
}
|
|
return
|
|
}
|
|
t.Fatal("tts_azure 没有 languages 字段")
|
|
}
|
|
}
|
|
|
|
// 废弃字段只从指定模板里删,且不碰别的字段——seed 平时是「只补不删」,这里是有名有姓的例外。
|
|
func TestRemoveDeprecatedFields(t *testing.T) {
|
|
fields := []SvcField{
|
|
{Key: "subscription_key"}, {Key: "region"},
|
|
{Key: "voice_name"}, {Key: "rate"}, {Key: "pitch"},
|
|
{Key: "languages"}, {Key: "default_lang"},
|
|
{Key: "运营自己加的"}, // 不在废弃清单里,必须留着
|
|
}
|
|
out, removed := removeDeprecatedFields("tts_azure", fields)
|
|
if len(removed) != 3 {
|
|
t.Fatalf("应删 3 个废弃字段,实际 %v", removed)
|
|
}
|
|
keys := make([]string, 0, len(out))
|
|
for _, f := range out {
|
|
keys = append(keys, f.Key)
|
|
}
|
|
got := strings.Join(keys, ",")
|
|
want := "subscription_key,region,languages,default_lang,运营自己加的"
|
|
if got != want {
|
|
t.Fatalf("清理后字段 = %s,期望 %s", got, want)
|
|
}
|
|
// 别的模板一个字段都不能少
|
|
if out2, removed2 := removeDeprecatedFields("tts_openai", fields); len(removed2) != 0 || len(out2) != len(fields) {
|
|
t.Fatalf("不该动 tts_openai 的字段,removed=%v len=%d", removed2, len(out2))
|
|
}
|
|
}
|
|
|