| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- package app
- import (
- "testing"
- "github.com/sst/opencode-sdk-go"
- )
- // TestFindModelByFullID tests the findModelByFullID function
- func TestFindModelByFullID(t *testing.T) {
- // Create test providers with models
- providers := []opencode.Provider{
- {
- ID: "anthropic",
- Models: map[string]opencode.Model{
- "claude-3-opus-20240229": {ID: "claude-3-opus-20240229"},
- "claude-3-sonnet-20240229": {ID: "claude-3-sonnet-20240229"},
- },
- },
- {
- ID: "openai",
- Models: map[string]opencode.Model{
- "gpt-4": {ID: "gpt-4"},
- "gpt-3.5-turbo": {ID: "gpt-3.5-turbo"},
- },
- },
- }
- tests := []struct {
- name string
- fullModelID string
- expectedFound bool
- expectedProviderID string
- expectedModelID string
- }{
- {
- name: "valid full model ID",
- fullModelID: "anthropic/claude-3-opus-20240229",
- expectedFound: true,
- expectedProviderID: "anthropic",
- expectedModelID: "claude-3-opus-20240229",
- },
- {
- name: "valid full model ID with slash in model name",
- fullModelID: "openai/gpt-3.5-turbo",
- expectedFound: true,
- expectedProviderID: "openai",
- expectedModelID: "gpt-3.5-turbo",
- },
- {
- name: "invalid format - missing slash",
- fullModelID: "anthropic",
- expectedFound: false,
- },
- {
- name: "invalid format - empty string",
- fullModelID: "",
- expectedFound: false,
- },
- {
- name: "provider not found",
- fullModelID: "nonexistent/model",
- expectedFound: false,
- },
- {
- name: "model not found",
- fullModelID: "anthropic/nonexistent-model",
- expectedFound: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- provider, model := findModelByFullID(providers, tt.fullModelID)
- if tt.expectedFound {
- if provider == nil || model == nil {
- t.Errorf("Expected to find provider/model, but got nil")
- return
- }
- if provider.ID != tt.expectedProviderID {
- t.Errorf("Expected provider ID %s, got %s", tt.expectedProviderID, provider.ID)
- }
- if model.ID != tt.expectedModelID {
- t.Errorf("Expected model ID %s, got %s", tt.expectedModelID, model.ID)
- }
- } else {
- if provider != nil || model != nil {
- t.Errorf("Expected not to find provider/model, but got provider: %v, model: %v", provider, model)
- }
- }
- })
- }
- }
- // TestFindModelByProviderAndModelID tests the findModelByProviderAndModelID function
- func TestFindModelByProviderAndModelID(t *testing.T) {
- // Create test providers with models
- providers := []opencode.Provider{
- {
- ID: "anthropic",
- Models: map[string]opencode.Model{
- "claude-3-opus-20240229": {ID: "claude-3-opus-20240229"},
- "claude-3-sonnet-20240229": {ID: "claude-3-sonnet-20240229"},
- },
- },
- {
- ID: "openai",
- Models: map[string]opencode.Model{
- "gpt-4": {ID: "gpt-4"},
- "gpt-3.5-turbo": {ID: "gpt-3.5-turbo"},
- },
- },
- }
- tests := []struct {
- name string
- providerID string
- modelID string
- expectedFound bool
- expectedProviderID string
- expectedModelID string
- }{
- {
- name: "valid provider and model",
- providerID: "anthropic",
- modelID: "claude-3-opus-20240229",
- expectedFound: true,
- expectedProviderID: "anthropic",
- expectedModelID: "claude-3-opus-20240229",
- },
- {
- name: "provider not found",
- providerID: "nonexistent",
- modelID: "claude-3-opus-20240229",
- expectedFound: false,
- },
- {
- name: "model not found",
- providerID: "anthropic",
- modelID: "nonexistent-model",
- expectedFound: false,
- },
- {
- name: "both provider and model not found",
- providerID: "nonexistent",
- modelID: "nonexistent-model",
- expectedFound: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- provider, model := findModelByProviderAndModelID(providers, tt.providerID, tt.modelID)
- if tt.expectedFound {
- if provider == nil || model == nil {
- t.Errorf("Expected to find provider/model, but got nil")
- return
- }
- if provider.ID != tt.expectedProviderID {
- t.Errorf("Expected provider ID %s, got %s", tt.expectedProviderID, provider.ID)
- }
- if model.ID != tt.expectedModelID {
- t.Errorf("Expected model ID %s, got %s", tt.expectedModelID, model.ID)
- }
- } else {
- if provider != nil || model != nil {
- t.Errorf("Expected not to find provider/model, but got provider: %v, model: %v", provider, model)
- }
- }
- })
- }
- }
- // TestFindProviderByID tests the findProviderByID function
- func TestFindProviderByID(t *testing.T) {
- // Create test providers
- providers := []opencode.Provider{
- {ID: "anthropic"},
- {ID: "openai"},
- {ID: "google"},
- }
- tests := []struct {
- name string
- providerID string
- expectedFound bool
- expectedProviderID string
- }{
- {
- name: "provider found",
- providerID: "anthropic",
- expectedFound: true,
- expectedProviderID: "anthropic",
- },
- {
- name: "provider not found",
- providerID: "nonexistent",
- expectedFound: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- provider := findProviderByID(providers, tt.providerID)
- if tt.expectedFound {
- if provider == nil {
- t.Errorf("Expected to find provider, but got nil")
- return
- }
- if provider.ID != tt.expectedProviderID {
- t.Errorf("Expected provider ID %s, got %s", tt.expectedProviderID, provider.ID)
- }
- } else {
- if provider != nil {
- t.Errorf("Expected not to find provider, but got %v", provider)
- }
- }
- })
- }
- }
|