Files
GopherGate/internal/models/registry_test.go
T
hobokenchicken 1c3b1c6fe9
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
fix: FindModel reverse fuzzy match for date-suffixed model IDs
Add step between exact ID match and forward fuzzy match that checks
if registry model ID starts with the requested name. Fixes models like
'gpt-5.4-mini' not matching 'gpt-5.4-mini-2026-04-01' in registry.
2026-04-26 21:09:56 -04:00

81 lines
1.7 KiB
Go

package models
import (
"testing"
)
func TestModelRegistry_FindModel_Exact(t *testing.T) {
r := &ModelRegistry{
Providers: map[string]ProviderInfo{
"openai": {
Models: map[string]ModelMetadata{
"gpt-4o": {ID: "gpt-4o", Name: "GPT-4o"},
},
},
},
}
m := r.FindModel("gpt-4o")
if m == nil {
t.Fatal("expected to find gpt-4o")
}
if m.Name != "GPT-4o" {
t.Fatalf("expected GPT-4o, got %s", m.Name)
}
}
func TestModelRegistry_FindModel_Fuzzy(t *testing.T) {
r := &ModelRegistry{
Providers: map[string]ProviderInfo{
"openai": {
Models: map[string]ModelMetadata{
"gpt-4o": {ID: "gpt-4o", Name: "GPT-4o"},
},
},
},
}
// Fuzzy: "gpt-4o-2024-05-13" should match "gpt-4o"
m := r.FindModel("gpt-4o-2024-05-13")
if m == nil {
t.Fatal("expected fuzzy match")
}
if m.Name != "GPT-4o" {
t.Fatalf("expected GPT-4o, got %s", m.Name)
}
}
func TestModelRegistry_FindModel_NotFound(t *testing.T) {
r := &ModelRegistry{
Providers: map[string]ProviderInfo{
"openai": {
Models: map[string]ModelMetadata{
"gpt-4o": {ID: "gpt-4o", Name: "GPT-4o"},
},
},
},
}
m := r.FindModel("nonexistent-model")
if m != nil {
t.Fatal("expected nil for nonexistent model")
}
}
func TestModelRegistry_FindModel_ReverseFuzzy(t *testing.T) {
r := &ModelRegistry{
Providers: map[string]ProviderInfo{
"openai": {
Models: map[string]ModelMetadata{
"gpt-5.4-mini-2026-04-01": {ID: "gpt-5.4-mini-2026-04-01", Name: "GPT-5.4 Mini"},
},
},
},
}
// Reverse fuzzy: "gpt-5.4-mini" should match "gpt-5.4-mini-2026-04-01"
m := r.FindModel("gpt-5.4-mini")
if m == nil {
t.Fatal("expected reverse fuzzy match")
}
if m.Name != "GPT-5.4 Mini" {
t.Fatalf("expected GPT-5.4 Mini, got %s", m.Name)
}
}