package llm

import "testing"

func TestRoute(t *testing.T) {
	tests := []struct {
		model string
		want  ProviderID
	}{
		{"claude-code", ProviderClaudeCode},
		{"claude-code/custom", ProviderClaudeCode},
		{"claude-sonnet-4-5-20250929", ProviderAnthropic},
		{"claude-opus-4", ProviderAnthropic},
		{"gpt-4o", ProviderOpenAI},
		{"o1-preview", ProviderOpenAI},
		{"o3-mini", ProviderOpenAI},
		{"ollama/mistral", ProviderOllama},
		{"unknown-model", ProviderOpenAI}, // default
	}

	for _, tt := range tests {
		t.Run(tt.model, func(t *testing.T) {
			got := Route(tt.model)
			if got != tt.want {
				t.Errorf("Route(%q) = %q, want %q", tt.model, got, tt.want)
			}
		})
	}
}

func TestModelName(t *testing.T) {
	tests := []struct {
		input, want string
	}{
		{"ollama/mistral", "mistral"},
		{"gpt-4o", "gpt-4o"},
		{"claude-sonnet-4-5-20250929", "claude-sonnet-4-5-20250929"},
	}

	for _, tt := range tests {
		t.Run(tt.input, func(t *testing.T) {
			got := ModelName(tt.input)
			if got != tt.want {
				t.Errorf("ModelName(%q) = %q, want %q", tt.input, got, tt.want)
			}
		})
	}
}
