113 lines
3.7 KiB
Go
113 lines
3.7 KiB
Go
package registry
|
|
|
|
import "testing"
|
|
|
|
func TestGetStaticModelDefinitionsByChannelSupportsGeminiInteractions(t *testing.T) {
|
|
models := GetStaticModelDefinitionsByChannel("gemini-interactions")
|
|
if len(models) == 0 {
|
|
t.Fatal("GetStaticModelDefinitionsByChannel(gemini-interactions) returned no models")
|
|
}
|
|
}
|
|
|
|
func TestModelOverrideHeadersFromEmbeddedModels(t *testing.T) {
|
|
const wantUA = "codex-tui/0.144.0 (Mac OS 26.5.1; arm64) iTerm.app/3.6.11 (codex-tui; 0.144.0)"
|
|
got := ModelOverrideHeaders("gpt-5.6-luna")
|
|
if got == nil {
|
|
t.Fatal("ModelOverrideHeaders(gpt-5.6-luna) = nil, want headers")
|
|
}
|
|
if got["user-agent"] != wantUA {
|
|
t.Fatalf("user-agent = %q, want %q", got["user-agent"], wantUA)
|
|
}
|
|
if got := ModelOverrideHeaders("gpt-5.4"); got != nil {
|
|
t.Fatalf("ModelOverrideHeaders(gpt-5.4) = %#v, want nil", got)
|
|
}
|
|
}
|
|
|
|
func TestGeminiVertexModelsUseFlashLiteReleaseID(t *testing.T) {
|
|
const releaseID = "gemini-3.1-flash-lite"
|
|
const previewID = releaseID + "-preview"
|
|
|
|
for _, model := range GetGeminiVertexModels() {
|
|
if model == nil {
|
|
continue
|
|
}
|
|
if model.ID == previewID {
|
|
t.Fatalf("Vertex model ID = %q, want release ID %q", model.ID, releaseID)
|
|
}
|
|
if model.ID == releaseID {
|
|
return
|
|
}
|
|
}
|
|
|
|
t.Fatalf("Vertex models do not contain %q", releaseID)
|
|
}
|
|
|
|
func TestWithXAIBuiltinsIncludesImage20(t *testing.T) {
|
|
models := WithXAIBuiltins(nil)
|
|
for _, model := range models {
|
|
if model != nil && model.ID == xaiBuiltinImage20ModelID {
|
|
if model.Created != 1786060800 {
|
|
t.Fatalf("created = %d, want 1786060800 (2026-08-07)", model.Created)
|
|
}
|
|
return
|
|
}
|
|
}
|
|
t.Fatalf("expected xAI builtin model %s", xaiBuiltinImage20ModelID)
|
|
}
|
|
|
|
func TestWithXAIBuiltinsIncludesVideo15GAAndPreviewAlias(t *testing.T) {
|
|
models := WithXAIBuiltins(nil)
|
|
foundGA := false
|
|
foundPreviewAlias := false
|
|
|
|
for _, model := range models {
|
|
if model == nil {
|
|
continue
|
|
}
|
|
if model.ID == xaiBuiltinVideo15ModelID {
|
|
foundGA = true
|
|
}
|
|
if model.ID == xaiBuiltinVideo15PreviewID {
|
|
foundPreviewAlias = true
|
|
}
|
|
}
|
|
|
|
if !foundGA {
|
|
t.Fatalf("expected xAI builtin model %s", xaiBuiltinVideo15ModelID)
|
|
}
|
|
if !foundPreviewAlias {
|
|
t.Fatalf("expected xAI builtin compatibility alias %s", xaiBuiltinVideo15PreviewID)
|
|
}
|
|
}
|
|
|
|
func TestAntigravityWebSearchModelForRequiresRequestedModelCapability(t *testing.T) {
|
|
registryRef := GetGlobalRegistry()
|
|
registryRef.RegisterClient("test-antigravity-websearch-route", "antigravity", []*ModelInfo{
|
|
{ID: "gemini-route-test"},
|
|
{ID: "gemini-web-search-test", SupportsWebSearch: true},
|
|
})
|
|
registryRef.RegisterClient("test-gemini-websearch-route", "gemini", []*ModelInfo{
|
|
{ID: "gemini-cross-provider-route"},
|
|
{ID: "gemini-cross-provider-search", SupportsWebSearch: true},
|
|
})
|
|
t.Cleanup(func() {
|
|
registryRef.UnregisterClient("test-antigravity-websearch-route")
|
|
registryRef.UnregisterClient("test-gemini-websearch-route")
|
|
})
|
|
|
|
if got := AntigravityWebSearchModelFor("gemini-route-test"); got != "" {
|
|
t.Fatalf("route model without web search support should not get fallback model, got %q", got)
|
|
}
|
|
if got := AntigravityWebSearchModelFor("gemini-route-test(high)"); got != "" {
|
|
t.Fatalf("suffix route model without web search support should not get fallback model, got %q", got)
|
|
}
|
|
if got := AntigravityWebSearchModelFor("gemini-web-search-test"); got != "gemini-web-search-test" {
|
|
t.Fatalf("AntigravityWebSearchModelFor capable model = %q, want itself", got)
|
|
}
|
|
if got := AntigravityWebSearchModelFor("gemini-cross-provider-route"); got != "" {
|
|
t.Fatalf("cross-provider model should not get Antigravity web search model, got %q", got)
|
|
}
|
|
if got := AntigravityWebSearchModelFor("unknown-model"); got != "" {
|
|
t.Fatalf("unknown model should not get Antigravity web search model, got %q", got)
|
|
}
|
|
}
|