openmeter / llmcost /sync /normalizer_test.go
Leon4gr45's picture
Upload folder using huggingface_hub (part 5)
cee2387 verified
Raw
History Blame Contribute Delete
2.5 kB
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"}, // Hyphenated date, stripped
{"strips 8-digit date suffix", "claude-3-5-sonnet-20241022", "claude-3-5-sonnet"}, // 8-digit, stripped
{"strips another date suffix", "gpt-4-turbo-20240409", "gpt-4-turbo"}, // 8-digit, stripped
{"no suffix unchanged", "gpt-4o", "gpt-4o"},
{"suffix in middle unchanged", "model-20241022-beta", "model-20241022-beta"}, // Not at end
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
_, modelID := n.Normalize(tt.input, "openai")
assert.Equal(t, tt.expected, modelID)
})
}
}