Files
deskview/internal/config/config_test.go
T
2026-10-27 17:58:28 +08:00

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("接入点丢失时应回退到第一个")
}
}