Files

62 lines
1.9 KiB
Go

package probe
import (
"reflect"
"testing"
)
func TestCanonicalModelFamily(t *testing.T) {
t.Parallel()
t.Run("kimi aliases collapse into one family", func(t *testing.T) {
t.Parallel()
variants := []string{"kimi 2.6", "kimi-2.6", "kimi-k2.6", "Kimi-K2.6"}
for _, variant := range variants {
if got := CanonicalModelFamily(variant); got != "kimi-2.6" {
t.Fatalf("CanonicalModelFamily(%q) = %q, want %q", variant, got, "kimi-2.6")
}
}
})
t.Run("deepseek vendor prefix normalizes away", func(t *testing.T) {
t.Parallel()
if got := NormalizeModelID("deepseek-ai/DeepSeek-V4-Pro"); got != "deepseek-v4-pro" {
t.Fatalf("NormalizeModelID() = %q, want %q", got, "deepseek-v4-pro")
}
if got := CanonicalModelID("deepseek-ai/DeepSeek-V4-Pro"); got != "deepseek-v4-pro" {
t.Fatalf("CanonicalModelID() = %q, want %q", got, "deepseek-v4-pro")
}
})
t.Run("alias table and requested model resolution prefer discovered ids", func(t *testing.T) {
t.Parallel()
rawModels := []string{"deepseek-ai/DeepSeek-V4-Pro", "kimi-k2.6"}
table := BuildAliasTable(rawModels)
if got := table["deepseek-v4-pro"].Canonical; got != "deepseek-v4-pro" {
t.Fatalf("alias canonical = %q, want %q", got, "deepseek-v4-pro")
}
resolved, ok := ResolveRequestedModel("DeepSeek V4 Pro", rawModels)
if !ok {
t.Fatal("ResolveRequestedModel() ok = false, want true")
}
if resolved != "deepseek-ai/DeepSeek-V4-Pro" {
t.Fatalf("ResolveRequestedModel() = %q, want discovered raw id", resolved)
}
})
t.Run("recommend models returns canonical discovered candidates", func(t *testing.T) {
t.Parallel()
rawModels := []string{"kimi-k2.6", "deepseek-ai/DeepSeek-V4-Pro"}
got := RecommendModels([]string{"kimi 2.6", "DeepSeek V4 Pro", "unknown"}, rawModels)
want := []string{"kimi-k2.6", "deepseek-ai/DeepSeek-V4-Pro"}
if !reflect.DeepEqual(got, want) {
t.Fatalf("RecommendModels() = %#v, want %#v", got, want)
}
})
}