76 lines
1.9 KiB
Go
76 lines
1.9 KiB
Go
package config
|
|
|
|
import "testing"
|
|
|
|
func TestDefaultIsUsable(t *testing.T) {
|
|
cfg := Default()
|
|
cfg.Normalize()
|
|
|
|
if len(cfg.Profiles) == 0 {
|
|
t.Fatal("默认配置应包含接入点")
|
|
}
|
|
if cfg.Active().Name != "qwen" {
|
|
t.Fatalf("默认接入点应为 qwen,实际 %s", cfg.Active().Name)
|
|
}
|
|
if cfg.Capture.FPS <= 0 || cfg.Capture.MaxEdge <= 0 || cfg.Capture.CooldownMs <= 0 {
|
|
t.Fatalf("抓屏参数不应为零值: %+v", cfg.Capture)
|
|
}
|
|
if tmpl := cfg.Template("exercise"); tmpl.Key != "exercise" {
|
|
t.Fatalf("应能取到习题模板,实际 %s", tmpl.Key)
|
|
}
|
|
if tmpl := cfg.Template("not-exist"); tmpl.Key == "" {
|
|
t.Fatal("未知模板应回退到第一个模板")
|
|
}
|
|
}
|
|
|
|
func TestNormalizeFillsZeroValues(t *testing.T) {
|
|
cfg := &Config{}
|
|
cfg.Normalize()
|
|
|
|
if cfg.ActiveProfile == "" {
|
|
t.Fatal("Normalize 应补全 ActiveProfile")
|
|
}
|
|
if len(cfg.Templates) == 0 {
|
|
t.Fatal("Normalize 应补全模板")
|
|
}
|
|
if cfg.Capture.JPEGQuality == 0 || cfg.Capture.StableFrames == 0 || cfg.Capture.HistoryTurns == 0 {
|
|
t.Fatalf("Normalize 应补全抓屏参数: %+v", cfg.Capture)
|
|
}
|
|
}
|
|
|
|
func TestCloneIsIndependent(t *testing.T) {
|
|
cfg := Default()
|
|
cfg.Normalize()
|
|
|
|
cp := cfg.Clone()
|
|
cp.Profiles[0].Model = "changed"
|
|
cp.Templates[0].System = "changed"
|
|
cp.Capture.FPS = 9
|
|
|
|
if cfg.Profiles[0].Model == "changed" {
|
|
t.Fatal("Clone 后修改接入点不应影响原配置")
|
|
}
|
|
if cfg.Templates[0].System == "changed" {
|
|
t.Fatal("Clone 后修改模板不应影响原配置")
|
|
}
|
|
if cfg.Capture.FPS == 9 {
|
|
t.Fatal("Clone 后修改抓屏参数不应影响原配置")
|
|
}
|
|
}
|
|
|
|
func TestProfileLookup(t *testing.T) {
|
|
cfg := Default()
|
|
cfg.Normalize()
|
|
|
|
if _, ok := cfg.Profile("qwen"); !ok {
|
|
t.Fatal("应能找到 qwen 接入点")
|
|
}
|
|
if _, ok := cfg.Profile("不存在"); ok {
|
|
t.Fatal("不应找到不存在的接入点")
|
|
}
|
|
cfg.ActiveProfile = "不存在"
|
|
if cfg.Active().Name != cfg.Profiles[0].Name {
|
|
t.Fatal("接入点丢失时应回退到第一个")
|
|
}
|
|
}
|