返回 DeepSeek-Reasonix
reasoning_selection_test.go
根目录 / internal / boot / reasoning_selection_test.go
1 package boot
2
3 import (
4 "errors"
5 "reflect"
6 "testing"
7
8 "reasonix/internal/config"
9 "reasonix/internal/provider"
10 )
11
12 func TestLegacyTokenRhythmReasoningAgreesAcrossConsumers(t *testing.T) {
13 e := config.ProviderEntry{Name: "token-rhythm", Kind: "openai", BaseURL: "https://tokenrhythm.studio/v1", Model: "deepseek-flash"}
14 cfg := &config.Config{DefaultModel: "token-rhythm/deepseek-flash", Providers: []config.ProviderEntry{e}}
15 high := "high"
16 if err := ValidateReasoningSnapshot(cfg, Options{EffortOverride: &high}); err != nil {
17 t.Fatal(err)
18 }
19 e.Effort = high
20 p, err := NewProvider(&e)
21 if err != nil {
22 t.Fatal(err)
23 }
24 actual := p.(provider.ReasoningProvider).ReasoningCapability()
25 if !reflect.DeepEqual(actual, config.ReasoningCapabilityForEntry(&e)) {
26 t.Fatalf("adapter/UI disagree: %+v", actual)
27 }
28 if !reflect.DeepEqual(actual.IDs(), []string{"disabled", "low", "high", "max"}) {
29 t.Fatal(actual)
30 }
31 if len(cfg.Providers[0].ModelOverrides) != 0 || cfg.Providers[0].Effort != "" {
32 t.Fatal("preflight mutated stored config")
33 }
34 }
35
36 func TestReasoningPreflightClearsOnlyCrossModelInheritance(t *testing.T) {
37 cfg := &config.Config{Providers: []config.ProviderEntry{{Name: "gateway", Kind: "openai", BaseURL: "https://unknown.invalid/v1", Models: []string{"a", "b"}}}}
38 high := "high"
39 for _, origin := range []string{"gateway/a", "gateway/b", ""} {
40 err := ValidateReasoningSnapshot(cfg, Options{Model: "gateway/b", EffortModel: origin, EffortOverride: &high})
41 if origin == "gateway/a" {
42 if err != nil {
43 t.Fatal(err)
44 }
45 } else {
46 var diagnostic *provider.UnsupportedReasoningEffort
47 if !errors.As(err, &diagnostic) || !diagnostic.Unknown {
48 t.Fatalf("explicit invalid choice was hidden: %v", err)
49 }
50 }
51 }
52 }
53
53 lines GO