package processing import "testing" func TestPreferKnownProviderMode(t *testing.T) { t.Parallel() if got := preferKnownProviderMode(AIProviderUnknown, AIProviderInternal); got != AIProviderInternal { t.Fatalf("unknown+internal=%q", got) } if got := preferKnownProviderMode("", "custom"); got != AIProviderCustom { t.Fatalf("empty+custom=%q", got) } if got := preferKnownProviderMode(AIProviderInternal, AIProviderCustom); got != AIProviderInternal { t.Fatalf("internal must win first=%q", got) } if got := preferKnownProviderMode(AIProviderUnknown, ""); got != AIProviderUnknown { t.Fatalf("all unknown=%q", got) } if isUnknownProviderMode("") != true || isUnknownProviderMode(AIProviderUnknown) != true { t.Fatal("expected empty/unknown to be unknown") } if isUnknownProviderMode(AIProviderInternal) { t.Fatal("internal must not be unknown") } } func TestNormalizeProviderMode(t *testing.T) { t.Parallel() cases := []struct { in, want string }{ {"", AIProviderUnknown}, {"internal", AIProviderInternal}, {"custom", AIProviderCustom}, {"popular:openai", "popular:openai"}, {"popular:", "popular:unknown"}, {"weird", AIProviderUnknown}, } for _, c := range cases { if got := normalizeProviderMode(c.in); got != c.want { t.Fatalf("normalize(%q)=%q want %q", c.in, got, c.want) } } } func TestCompleterProviderMode_OpenAIClient(t *testing.T) { t.Parallel() c := NewOpenAIClient("k", "", "m", 0, 1) if got := CompleterProviderMode(c); got != AIProviderInternal { t.Fatalf("got %q", got) } c.ModeLabel = "popular:groq" if got := CompleterProviderMode(c); got != "popular:groq" { t.Fatalf("got %q", got) } } func TestCompleterProviderMode_Heuristic(t *testing.T) { t.Parallel() if got := CompleterProviderMode(HeuristicCompleter{}); got != AIProviderInternal { t.Fatalf("got %q", got) } }