返回 DeepSeek-Reasonix
unknown_vision_test.go
根目录 / internal / config / unknown_vision_test.go
1 package config
2
3 import "testing"
4
5 func TestUnknownDeepSeekVisionOverride(t *testing.T) {
6 model := "deepseek-v5-flash"
7 enabled := true
8 e := ProviderEntry{Kind: "openai", BaseURL: "https://api.deepseek.com", Model: model}
9 r := NewModelCapabilityResolver()
10 if got := r.Resolve(&e); !got.ImageInputEnableAllowed || got.State != CapabilityUnknown {
11 t.Fatalf("unknown model should permit manual declaration: %+v", got)
12 }
13 e.ModelOverrides = map[string]ProviderModelOverride{model: {Vision: &enabled}}
14 if got := r.Resolve(&e); !got.ImageInputEnableAllowed || got.State != CapabilitySupported {
15 t.Fatalf("override rejected: %+v", got)
16 }
17 e.Name = "deepseek-test"
18 e.Model = ""
19 e.Models = []string{"DeepSeek-V5-Flash", model}
20 cfg := Config{Providers: []ProviderEntry{e}}
21 resolved, ok := cfg.ResolveModel(e.Name + "/" + model)
22 if !ok || resolved.Model != model || !EffectiveVision(resolved) {
23 t.Fatalf("lowercase model and its vision override did not resolve: %+v", resolved)
24 }
25 upper, ok := cfg.ResolveModel(e.Name + "/" + e.Models[0])
26 if !ok || EffectiveVision(upper) {
27 t.Fatal("uppercase model inherited lowercase vision override")
28 }
29 }
30
31 func TestCaseDistinctModelOverridesAreIsolated(t *testing.T) {
32 on := true
33 for _, configured := range []string{"model-a", "Model-A"} {
34 e := ProviderEntry{Models: []string{"model-a", "Model-A"}, VisionModels: []string{configured}, ModelOverrides: map[string]ProviderModelOverride{configured: {Vision: &on, ContextWindow: 1234, MaxOutputTokens: 123, ReasoningProtocol: "deepseek"}}}
35 for _, model := range e.Models {
36 _, matched := e.modelOverrideForModel(model)
37 if matched != (model == configured) || e.HasVisionModel(model) != (model == configured) {
38 t.Fatalf("%s inherited settings from %s", model, configured)
39 }
40 }
41 }
42 }
43
43 lines GO