mirror of
https://github.com/docker/docker-agent.git
synced 2026-11-04 10:02:15 +00:00
94 lines
2.0 KiB
Go
94 lines
2.0 KiB
Go
package modelsdev
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestNewID(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
id := NewID("openai", "gpt-4o")
|
|
assert.Equal(t, "openai", id.Provider)
|
|
assert.Equal(t, "gpt-4o", id.Model)
|
|
assert.Equal(t, "openai/gpt-4o", id.String())
|
|
assert.True(t, id.IsValid())
|
|
assert.False(t, id.IsZero())
|
|
}
|
|
|
|
func TestParseID(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
ref string
|
|
wantID ID
|
|
wantErr bool
|
|
wantStringR bool // round-trips via String()
|
|
}{
|
|
{"valid", "openai/gpt-4o", ID{Provider: "openai", Model: "gpt-4o"}, false, true},
|
|
{"valid with slash in model", "openai/foo/bar", ID{Provider: "openai", Model: "foo/bar"}, false, false},
|
|
{"missing separator", "openai-gpt-4o", ID{}, true, false},
|
|
{"missing provider", "/gpt-4o", ID{}, true, false},
|
|
{"missing model", "openai/", ID{}, true, false},
|
|
{"empty", "", ID{}, true, false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
got, err := ParseID(tt.ref)
|
|
if tt.wantErr {
|
|
require.Error(t, err)
|
|
assert.Equal(t, ID{}, got)
|
|
return
|
|
}
|
|
require.NoError(t, err)
|
|
assert.Equal(t, tt.wantID, got)
|
|
if tt.wantStringR {
|
|
assert.Equal(t, tt.ref, got.String())
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestParseIDOrZero(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
id := ParseIDOrZero("openai/gpt-4o")
|
|
assert.Equal(t, ID{Provider: "openai", Model: "gpt-4o"}, id)
|
|
|
|
id = ParseIDOrZero("not-a-ref")
|
|
assert.True(t, id.IsZero())
|
|
assert.Empty(t, id.String())
|
|
}
|
|
|
|
func TestIDZero(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
var id ID
|
|
assert.True(t, id.IsZero())
|
|
assert.False(t, id.IsValid())
|
|
assert.Empty(t, id.String())
|
|
}
|
|
|
|
func TestIDIsValid(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
id ID
|
|
want bool
|
|
}{
|
|
{ID{Provider: "openai", Model: "gpt-4o"}, true},
|
|
{ID{Provider: "openai"}, false},
|
|
{ID{Model: "gpt-4o"}, false},
|
|
{ID{}, false},
|
|
}
|
|
for _, tt := range tests {
|
|
assert.Equal(t, tt.want, tt.id.IsValid(), "id=%+v", tt.id)
|
|
}
|
|
}
|