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

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))
}
}