package config import ( "testing" ) // 注意:这些测试函数测试的是未导出的私有函数 // 如果编译失败,说明函数未定义或包名不匹配 func TestIsRerankModelName(t *testing.T) { tests := []struct { name string model string expected bool }{ {"gte-rerank-v2", "gte-rerank-v2", true}, {"qwen3-rerank", "qwen3-rerank", true}, {"bge-rerank-large", "bge-rerank-large", true}, {"text-embedding-v4", "text-embedding-v4", false}, {"text-embedding-v3", "text-embedding-v3", false}, {"qwen-turbo", "qwen-turbo", false}, {"empty string", "", false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { result := isRerankModelName(tt.model) if result != tt.expected { t.Errorf("isRerankModelName(%q) = %v, want %v", tt.model, result, tt.expected) } }) } } func TestIsEmbeddingModelName(t *testing.T) { tests := []struct { name string model string expected bool }{ {"text-embedding-v4", "text-embedding-v4", true}, {"text-embedding-v3", "text-embedding-v3", true}, {"bge-large-zh", "bge-large-zh", true}, {"gte-large", "gte-large", true}, {"gte-rerank-v2", "gte-rerank-v2", false}, {"qwen3-rerank", "qwen3-rerank", false}, {"qwen-turbo", "qwen-turbo", false}, {"empty string", "", false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { result := isEmbeddingModelName(tt.model) if result != tt.expected { t.Errorf("isEmbeddingModelName(%q) = %v, want %v", tt.model, result, tt.expected) } }) } } func TestApplyDefaultsFixesWrongModelConfig(t *testing.T) { // 测试错误配置会被自动修正 cfg := NewDefaultConfig() // 模拟用户错误地将 Rerank 模型填到 Embedding 字段 cfg.AutoReplyConfig.Retrieval.EmbeddingModel = "gte-rerank-v2" cfg.AutoReplyConfig.Retrieval.RerankModel = "qwen3-rerank" cfg.ApplyDefaults() // 验证错误的 Embedding 模型被修正为默认值 if cfg.AutoReplyConfig.Retrieval.EmbeddingModel != "text-embedding-v4" { t.Errorf("Expected embedding model to be corrected to 'text-embedding-v4', got %q", cfg.AutoReplyConfig.Retrieval.EmbeddingModel) } // 验证 Rerank 模型保持不变 if cfg.AutoReplyConfig.Retrieval.RerankModel != "qwen3-rerank" { t.Errorf("Expected rerank model to remain 'qwen3-rerank', got %q", cfg.AutoReplyConfig.Retrieval.RerankModel) } } func TestApplyDefaultsFixesWrongRerankConfig(t *testing.T) { // 测试错误配置会被自动修正 cfg := NewDefaultConfig() // 模拟用户错误地将 Embedding 模型填到 Rerank 字段 cfg.AutoReplyConfig.Retrieval.EmbeddingModel = "text-embedding-v4" cfg.AutoReplyConfig.Retrieval.RerankModel = "text-embedding-v3" cfg.ApplyDefaults() // 验证 Embedding 模型保持不变 if cfg.AutoReplyConfig.Retrieval.EmbeddingModel != "text-embedding-v4" { t.Errorf("Expected embedding model to remain 'text-embedding-v4', got %q", cfg.AutoReplyConfig.Retrieval.EmbeddingModel) } // 验证错误的 Rerank 模型被修正为默认值 if cfg.AutoReplyConfig.Retrieval.RerankModel != "qwen3-rerank" { t.Errorf("Expected rerank model to be corrected to 'qwen3-rerank', got %q", cfg.AutoReplyConfig.Retrieval.RerankModel) } }