package ratio_setting import ( "testing" "github.com/QuantumNous/new-api/setting/model_setting" "github.com/stretchr/testify/assert" ) func TestFormatMatchingModelNameDoesNotStripBase(t *testing.T) { assert.Equal(t, "qwen3-max@thinking:on", FormatMatchingModelName("qwen3-max@thinking:on")) assert.Equal(t, "claude-3-7-sonnet-thinking", FormatMatchingModelName("claude-3-7-sonnet-thinking")) assert.Equal(t, "gemini-2.5-flash-thinking-*", FormatMatchingModelName("gemini-2.5-flash-thinking-8192")) assert.Equal(t, "gpt-4-gizmo-*", FormatMatchingModelName("gpt-4-gizmo-abc")) } func TestRoutingMatchModelNameStripsThenWildcards(t *testing.T) { assert.Equal(t, "qwen3-max", RoutingMatchModelName("qwen3-max@thinking:on@temperature:0.2")) assert.Equal(t, "claude-3-7-sonnet", RoutingMatchModelName("claude-3-7-sonnet-thinking")) assert.Equal(t, "gemini-2.5-flash-thinking-*", RoutingMatchModelName("gemini-2.5-flash-thinking-8192")) assert.Equal(t, "gpt-5.1-codex-max", RoutingMatchModelName("gpt-5.1-codex-max")) geminiSettings := model_setting.GetGeminiSettings() old := geminiSettings.ThinkingAdapterEnabled geminiSettings.ThinkingAdapterEnabled = true t.Cleanup(func() { geminiSettings.ThinkingAdapterEnabled = old }) assert.Equal(t, "gemini-2.5-flash", RoutingMatchModelName("gemini-2.5-flash-thinking-8192")) } func TestRoutingMatchModelNamePreservesExemptAtName(t *testing.T) { settings := model_setting.GetGlobalSettings() original := append([]string(nil), settings.ThinkingModelBlacklist...) t.Cleanup(func() { settings.ThinkingModelBlacklist = original }) settings.ThinkingModelBlacklist = append(original, "re:.*@sha256:.*") assert.Equal(t, "opaque@sha256:deadbeef", RoutingMatchModelName("opaque@sha256:deadbeef")) assert.Equal(t, "kimi-k2-thinking", RoutingMatchModelName("kimi-k2-thinking")) }