| package sync |
|
|
| import ( |
| "testing" |
|
|
| "github.com/stretchr/testify/assert" |
| ) |
|
|
| func TestNormalizerProviderNames(t *testing.T) { |
| n := NewDefaultNormalizer() |
|
|
| tests := []struct { |
| input string |
| expected string |
| }{ |
| {"openai", "openai"}, |
| {"azure", "azure"}, |
| {"azure_ai", "azure"}, |
| {"anthropic", "anthropic"}, |
| {"google", "google"}, |
| {"vertex_ai", "vertex_ai"}, |
| {"gemini", "google"}, |
| {"amazon", "amazon"}, |
| {"aws", "amazon"}, |
| {"bedrock", "bedrock"}, |
| {"bedrock_converse", "bedrock"}, |
| {"meta", "meta"}, |
| {"facebook", "meta"}, |
| {"deepseek", "deepseek"}, |
| {"mistral", "mistral"}, |
| {"mistralai", "mistral"}, |
| {"cohere", "cohere"}, |
| {"xai", "xai"}, |
| {"x-ai", "xai"}, |
| {"minimax", "minimax"}, |
| {"nano-gpt", "nanogpt"}, |
| {"nano_gpt", "nanogpt"}, |
| {"nanogpt", "nanogpt"}, |
| {"vertex_ai-language-models", "vertex_ai"}, |
| {"vertex_ai-text-models", "vertex_ai"}, |
| {"vertex_ai_something", "vertex_ai"}, |
| {"unknown_provider", "unknown_provider"}, |
| } |
|
|
| for _, tt := range tests { |
| t.Run(tt.input, func(t *testing.T) { |
| provider, _ := n.Normalize("some-model", tt.input) |
| assert.Equal(t, tt.expected, provider) |
| }) |
| } |
| } |
|
|
| func TestNormalizerCaseAndWhitespace(t *testing.T) { |
| n := NewDefaultNormalizer() |
|
|
| t.Run("lowercases provider", func(t *testing.T) { |
| provider, _ := n.Normalize("model", "OpenAI") |
| assert.Equal(t, "openai", provider) |
| }) |
|
|
| t.Run("lowercases model ID", func(t *testing.T) { |
| _, modelID := n.Normalize("GPT-4o", "openai") |
| assert.Equal(t, "gpt-4o", modelID) |
| }) |
|
|
| t.Run("trims whitespace", func(t *testing.T) { |
| provider, modelID := n.Normalize(" gpt-4 ", " openai ") |
| assert.Equal(t, "openai", provider) |
| assert.Equal(t, "gpt-4", modelID) |
| }) |
| } |
|
|
| func TestNormalizerVersionSuffix(t *testing.T) { |
| n := NewDefaultNormalizer() |
|
|
| tests := []struct { |
| name string |
| input string |
| expected string |
| }{ |
| {"strips hyphenated date suffix", "gpt-4o-2024-08-06", "gpt-4o"}, |
| {"strips 8-digit date suffix", "claude-3-5-sonnet-20241022", "claude-3-5-sonnet"}, |
| {"strips another date suffix", "gpt-4-turbo-20240409", "gpt-4-turbo"}, |
| {"no suffix unchanged", "gpt-4o", "gpt-4o"}, |
| {"suffix in middle unchanged", "model-20241022-beta", "model-20241022-beta"}, |
| } |
|
|
| for _, tt := range tests { |
| t.Run(tt.name, func(t *testing.T) { |
| _, modelID := n.Normalize(tt.input, "openai") |
| assert.Equal(t, tt.expected, modelID) |
| }) |
| } |
| } |
|
|